【排序算法】:希尔排序
2017-08-11 10:47
274 查看
介绍
希尔排序是一种插入排序算法,它出自D.L.Shell,因此而得名。Shell排序又称作缩小增量排序。原理图:
思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2
代码实现
void ShellSort(int* arr, int len) { assert(arr); assert(len); int gap = len; while (gap > 1) { gap = gap / 3 + 1; for (int i = gap; i < len; i++) { int end = i - gap; int temp = arr[i]; while (end >= 0) { if (arr[end] < temp) break; arr[end + gap] = arr[end]; end -= gap; } arr[end + gap] = temp; } } }
相关文章推荐
- 排序算法——希尔排序
- 排序算法 之 希尔排序
- 高效排序算法(希尔排序)
- 排序算法四——希尔排序
- 排序算法(五)希尔排序
- 排序算法---希尔排序
- 排序算法(二):希尔排序(最小增量排序)
- 排序算法(快排,希尔排序)
- 几种常用的排序算法(快速排序,希尔排序,堆排序,选择排序,冒泡排序)
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序,堆排序)
- 排序算法(二)希尔排序
- 排序算法之希尔排序
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- PHP实现排序算法----希尔排序(Shell Sort)
- 常见的排序算法二——希尔排序
- 排序算法--希尔排序
- C++实现常用排序算法(快速排序、冒泡排序、希尔排序、折半插入排序、直接插入排序)
- 排序算法之希尔排序
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 【Java常用排序算法】插入排序(直接插入排序、希尔排序)