希爾排序(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(好快!!!)