排序 —— 希尔排序(Shell sort)
2016-10-04 10:56
344 查看
希尔排序(Shell sort)的名称源于它的发明者 Donald Shell,该算法是冲破二次时间屏障(冒泡和插入排序,基于相邻元素的交换)的第一批算法。希尔排序改进了冒泡和插入排序的相邻元素才进行交换,而是比较相距一段距离的元素来工作,各趟比较所用的距离随着算法的进行而减少,直到只比较相邻元素的最后一趟排序为止。正是因为这样的工作机制,希尔排序有时也称为缩小增量排序(diminishing increment sort)。
typedef int ElementType; void ShellSort (ElementType A[], int N) { int Increment, i, j; ElementType Tmp; for (Increment = N/2; Increment >= 0; Increment /= 2) { for (i = Increment; i < N; ++i) { Tmp = A[i]; for (j = i; j >= Increment; j -= Increment) { if (Tmp < A[j-Increment]) A[j] = A[j-Increment]; else break; // 尤其注意这里的 break; } A[j] = Tmp; } } }
相关文章推荐
- 排序_Shell_Sort(希尔排序)
- 排序_Shell_Sort(希尔排序)更正版
- 【DS】排序算法之希尔排序(Shell Sort)
- 插入排序之希尔排序(Shell Sort)
- [排序] 希尔排序(Shell Sort)
- 排序——希尔排序(Shell Sort)
- 排序1+3:基数排序(RadixSort),希尔排序(ShellSort)和快速排序(QuickSort)
- Java基础知识强化57:经典排序之希尔排序(ShellSort)
- C++实现谢尔排序(希尔排序)(shell sort)
- 排序--希尔排序的实现(shellsort)
- 【排序算法 】希尔排序 shell sort(插入类排序)
- uva 10152 ShellSort 龟壳排序(希尔排序?)
- 无聊写排序之 ---- 希尔排序(ShellSort)
- 排序1+3:基数排序(RadixSort),希尔排序(ShellSort)和快速排序(QuickSort)
- uva 10152 ShellSort 龟壳排序(希尔排序?)
- 希尔排序(shellsort)又叫增量递减排序(diminishing increment)
- PHP Array -- PHP 排序 -- 希尔排序(Shell Sort)
- 排序之希尔排序(Shell Sort)
- 【ShellSort】希尔排序
- 数据算法之希尔排序(shellSort)的Java实现