排序算法之shell排序
2013-11-08 20:44
211 查看
希尔排序和快速排序有些类似,也是基于分组的意识,不同的是,希尔排序分组的基准是步长,步长相等的元素参与排序,再缩小步长,由于此时数组已经基本有序,所以有了较为快的执行速度,当步长为1时,对整个数列排序。算法要求最后一步步长必须为1,此时shell排序退化为冒泡排序。关于如何选择步长,可以参考其他的资料,后续补充。
void EX_SortShell(int a[], int n) { int step = 0; while (step <= n) { //计算step,保证step最后为1 step = step * 3 + 1; } while (step > 0) { for (int i = 0; i < n; i++) { for (int j = i + step; j < n; j += step) { if (a[i] > a[j]) { myexchange(a, i, j); } } } step = step / 3 ; } return; }
相关文章推荐
- java算法(一)——排序算法(下)之 shell排序
- 基本排序算法(1)—插入排序及其变形shell排序
- 用Python实现基本排序算法04——Shell排序
- 排序算法——shell排序
- Java实现-高效排序算法之Shell排序
- 排序算法(插入排序、shell排序、冒泡排序、选择排序、合并排序、堆排序、快速排序、计数排序、基数排序、桶排序)
- 排序算法---Shell排序
- 排序算法——shell排序
- C语言实现基本排序算法----排序(直接插入排序,SHELL排序,冒泡排序,快速排序,简单选择排序,堆排序)
- Java排序算法(七):希尔排序(Shell排序)
- 排序算法总结之快速排序、归并排序、shell排序
- 排序算法门外汉理解-Shell排序
- Java排序算法:希尔排序(Shell排序)
- 排序算法--插入排序(直接插入排序、折半插入、shell排序)的java实现
- 排序算法(Java实现):Shell排序和归并排序
- 程序猿找工作必练内功:排序算法大总结(六)——shell排序
- 排序算法(四)-Shell排序
- 排序算法之shell排序
- 排序算法总结-Shell排序、归并排序、快排、堆排
- 排序算法思想——归并排序、堆排序、shell排序