希尔排序(ShellSort)
- #include "ShellSort.h"
- #include "Print.h"
- // 希尔排序,分组进行插入排序,最后一步仍然是插入排序,但是因为之前的操作使逆序数减少,所以相对单纯的插入排序效率高。
- void ShellSort(int A[], int N)
- {
- int i, j, Increment;
- int Tmp;
- for(Increment = N/2; Increment > 0; Increment /= 2) // 增量每次递减一半
- {
- for(i = Increment; i < N; i++) // 对每组的子序列进行插入排序
- {
- Tmp = A[i];
- for(j = i; j >= Increment && A[j-Increment] > Tmp; j -= Increment)
- A[j] = A[j-Increment];
- A[j] = Tmp;
- }
- }
- }
主文件main.cpp 详见此系列前篇”排序算法01:选择排序“
耗时Time = 10ms(好快!!!)
http://blog.youkuaiyun.com/huaweidong2011/article/details/7732844