希尔排序
来源:互联网 发布:java 反序列化系列 编辑:程序博客网 时间:2024/06/05 11:39
希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。
原理
先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。
希尔排序的一般实现
void shellSort(int list[],int low,int high){int len = high - low + 1;int d = len / 2;while (d >= 1){for(int i=low+d;i<=high;i++){int j = i - d;int temp = list[i];while(j>=low && list[j]>temp){list[j+d] = list[j];j = j - d;}list[j+d] = temp;}d = d / 2;}}具体的步长可以有更精细的考虑,这里作为演示性的实现,未作过多考虑。
测试数据与每轮的中间结果:
521 310 72 373 15 546 385 856 187 147 521 310 72 187 15 546 385 856 373 147 15 147 72 187 373 310 385 546 521 856 15 72 147 187 310 373 385 521 546 856
0 0
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- CentOS PHP与memcache快速搭建
- 【DirectX 11 SDK 学习笔记】3D Spaces
- LeetCode Multiply Strings 大数相乘
- JS写真人行走
- java调用ORACLE的函数
- 希尔排序
- 【第一话】青蛙阶梯跳的递归解法
- linux下快速清空文本文件中的内容
- POJ 2299 Ultra-QuickSort(树状数组)
- 用Prime31实现Google Play In-App-Blling
- 反射
- 成佩涛编程之路——android之jquery使用(一)
- 银行业务调度系统
- 成佩涛编程之路——android之jquery使用(二)