排序算法之四 Shell排序
来源:互联网 发布:数控车床编程图文实例 编辑:程序博客网 时间:2024/05/16 16:09
Shell 排序是将待排序序列 d 进行分组排序,分组排好序之后,在增大组数(也就是减小分组间隔)来进行分组排序,一直到分组间隔足够小(为 1 时)就得到了排好序的结果数组。
Shell 排序过程示例如下:
待排序数组:10 6 3 7 2 8 9 2 4 1 n = 10
Step1:以 (10/2 = 5) 为分组间隔进行排序:i 与(i+5),i + 5 < n
结果:10 6 3 7 2 ----> 8 6 2 4 1 ----> 8 6 2 4 1 10 9 3 7 2
8 9 2 4 1 ----> 10 9 3 7 2
Step2:以 (5/2 = 2)为分组间隔进行排序:i 与(i+2),i + 2 < n
结果:8 6 1 2
2 4 2 3
1 10 ---->7 4 ----> 1 2 2 3 7 4 8 6 9 10
9 3 8 6
7 2 9 10
Step3:以 (2/2 = 1)为分组间隔进行排序:i 与(i+1),i + 1 < n
结果:1 2 2 3 7 4 8 6 9 10 ----> 1 2 2 3 4 6 7 8 9 10
Step4:1 / 2 = 0,结束!
算法实现代码如下(每次的分组间隔建议选取上一次的1/2):
void shellSort(double *dataIn, int sizeIn){/* 2012/08/23, by wbprime@myopera.com */for (int g = sizeIn / 2; g > 0; g /= 2) { for (int i = g; i < sizeIn; ++i) for (int j = i - g; j >= 0 && dataIn[j] > dataIn[j+g]; j -= g) swap(dataIn[j], dataIn[j+g]);}}
- 排序算法之四 Shell排序
- 排序算法(四)-Shell排序
- 排序算法之shell排序
- 排序算法之shell排序
- 排序算法总结之快速排序、归并排序、shell排序
- 算法学习之排序(4)--Shell排序
- java排序之shell排序(希尔排序)(四)
- 排序算法之四归并排序
- 蛙步学排序算法之四 - 希尔排序
- 【算法-排序之四】希尔排序
- 【算法-排序之四】希尔排序
- 排序算法之四--堆排序
- 图解排序算法(四)之归并排序
- 图解排序算法(四)之归并排序
- 图解排序算法(四)之归并排序
- 排序算法---Shell排序
- 排序算法--shell排序
- 排序算法--Shell排序
- Linux mount
- Root用户使用Xmanager远程桌面连接管理CentOS 5
- Oracle数据库的物理备份导入和导出
- 情绪管理:如何与狼相处?
- 经典18秒
- 排序算法之四 Shell排序
- 页面乱码问题根源浅析
- 学生管理系统之添加数据
- 实习第46天
- ireport开发系列(一)
- 【100题】第五十七题 用两个栈实现队列
- 正则表达式备忘笔记
- oracle多表查询留言人(日志人、日志内容、日志留言人)
- android带返回按钮的自定义标题栏