#include #include using namespace std; void shellsort(int a[],int n){ int i,j; int jump=n; do{ jump=jump/3+1;//浮动 for (i=jump+1;i0 && a[0]1); } int ma... ...
分类:
编程语言 时间:
2018-12-27 03:32:35
阅读次数:
174
排序算法 算法分析 算法稳定性 如果一种排序算法不会改变关键码值相同的记录的相对顺序,则称为稳定的(stable) 不稳定的算法在某种条件下可以变为稳定的算法,而稳定的算法在某种条件下也可以变为不稳定的算法。例如,对于冒泡排序算法,原本是稳定的排序算法,如果将记录交换的条件改成a[j].key>=a ...
分类:
编程语言 时间:
2018-12-12 22:07:25
阅读次数:
326
#include <stdio.h> #include <stdlib.h> void ShellSort(int a[], int length) { int increment; int i,j; int temp; for(increment = length/2; increment > 0 ...
分类:
编程语言 时间:
2018-12-08 19:14:44
阅读次数:
214
#include using namespace std; #define MAXSIZE 200000 typedef int KeyType; typedef struct { KeyType key; }RedType; typedef struct { RedType r[MAXSIZE +... ...
分类:
系统相关 时间:
2018-12-05 00:09:31
阅读次数:
258
一.希尔排序shellsort也称缩小增量排序,是对插入排序算法的改进,其工作原理是定义一个间隔序列来表示排序过程中进行比较的元素之间有多远的间隔,每次将具有相同间隔的数分为一组,进行插入排序,大部分场景中,间隔是可以提前定义好的,也可以动态生成。在较大的数据集上,希尔排序对于插排的优化效果是非常明显的。./***希尔排序示例代码*/functionshellSort(gaps,arr){for(
分类:
编程语言 时间:
2018-11-29 12:21:20
阅读次数:
200
假如有一个9元数组: 假如 gap = 3 那么分为3组 每组3个元素 那么,这三组的元素分别是: 在每个组组内,分别进行直接插入排序 第一组: 从第二个元素开始,也就是从gap下标开始,依次与前面的元素比对,然后插入,可见,要进行两次插入 第二组和第三组也是一样的,只是开始的位置分别是,gap+1 ...
分类:
编程语言 时间:
2018-11-21 17:45:39
阅读次数:
215
写了一点haffman树的创建和二叉树的非递归遍历. 如果编写代码的时候出现了,思维断点,可以借鉴一下, 避免浪费一些不必要的时间. ...
分类:
其他好文 时间:
2018-11-02 21:49:00
阅读次数:
223
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。 希尔排序是基于插入排序的以下两点性质而提出改进方法 ...
分类:
编程语言 时间:
2018-10-12 21:20:33
阅读次数:
130
希尔排序是插入排序的改进版本,它与插入排序的不同之处在于,它会优先比较距离较远的元素。其中它的时间复杂度为O(n^1.3),空间复杂度O(1),算法相对不稳定。 ...
分类:
编程语言 时间:
2018-10-04 11:41:38
阅读次数:
134
排序是一个你想的越久,就会越明白的脑洞,快速排序和堆排序是研究最久的,它开始让我觉得程序寥寥数行,却透彻着开发者精妙的思想。 废话不多说,摆代码: ...
分类:
编程语言 时间:
2018-08-24 00:29:23
阅读次数:
143