希尔排序可以说是插入排序的优化,算法的时间复杂度为O(nlogn),算法不稳定
在数字比较多的时候,希尔排序在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动
void ShelSort(int *src, int n)
{
int i, j, k;
int gap, tmp;
for (gap = n / 2; gap; gap /= 2)
{
for (k = 0; k < gap; k++)
{
for (i = gap + k; i < n; i += gap)
{
tmp = src[i];
for (j = i; j >= gap && src[j - gap] > tmp; j -= gap)
{
src[j] = src[j - gap];
}
src[j] = tmp;
}
}
}
}
来源:https://blog.csdn.net/qq_44783220/article/details/100053570