排序算法之希尔排序
来源:互联网 发布:数据库导论第五版答案 编辑:程序博客网 时间:2024/05/22 17:40
希尔排序的原理
希尔排序其实就是增量从d逐渐到1,进行多次直接插入排序。这里的d的递减顺序是每次除2。
举个例子
还是1,8,2,3,5,6,0,2。刚开始我们的d为4(8除2)。 然后我们进行增量为4的直接插入排序。
1 和 5 ,8和6 ,2和0,3和2
一趟排序结果为 1,6,0,2,5,8,2,3.
接下来增量为2(4/2)。然后进行增量为2的直接插入排序。
1和0和5和2 ,6和2 和8和3
二趟排序结果为0,2,1,3,2,6,5,8
接下来进行增量为1的直接插入排序
三趟排序结果为0,1,2,2,3,5,6,8.
代码
void Shell_Insert(int *array,int d,int length){ for (int i = d; i < length; i++) { int j = i - d; int temp = array[i]; while (j >= 0 && array[j] > temp) { array[j + d] = array[j]; j -= d; } if (j != i - d) { array[j + d] = temp; } }}void Shell_Sort(int *array,int length){ int d = length / 2; while (d >= 1) { Shell_Insert(array,d,length); d /= 2; }}
0 0
- 算法之希尔排序
- 算法之希尔排序
- 算法之希尔排序
- 算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- 排序算法之希尔排序
- Day22-进度条对话框
- 单例模式
- JS禁止浏览器后退键
- wegwg
- wegwegweg
- 排序算法之希尔排序
- poj3264 Balanced Lineup(线段树)
- Android ListView选项(View)清除背景色
- 三种开辟工作线程的方法
- TestFlight使用
- ewgwg
- BZOJ 3208 花神的秒题计划Ⅰ 记忆化搜索
- 移植U-Boot之BootLoader简介
- MYSQL