希尔排序(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(好快!!!)
2万+

被折叠的 条评论
为什么被折叠?



