//希尔排序
void ShellSort(int* a, int n)
{
int gap=n;
while (gap > 1)
{
gap = gap / 3+1;//保证最后一次gap一定是1
//最后一次为插入排序
for (int i = 0; i < n - gap; ++i)
{
int end = i;
int tmp = a[end + gap];
while (end >= 0)
{
if (tmp < a[end])
{
a[gap + end] = a[end];
end -= gap;
}
else
{
break;
}
a[end + gap] = tmp;
}
}
}
}
初见希尔,心喜之,故发
于 2024-07-25 22:11:29 首次发布