1.简介
shellsort又称为最小增量排序。
使用增量序列h1,h2,...ht,在使用增量hk的一趟排序后,对于间隔为k的元素都是排序后的。
使用希尔增量排序时最坏运行时间为theta(N2)
增量序列通常的选择为:ht = N/2,hk = hk+1/2
2.实现
void shellsort(ElementType A[], int N)
{
int i, j, Increment;
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;
}
A[j] = Tmp;
}
}
}