希尔排序
void shellsort(int *data, size_t size)
{
for (int gap = size / 2; gap > 0; gap /= 2)
for (int i = gap; i < size; ++i)
{
int key = data[i];
int j = 0;
for( j = i -gap; j >= 0 && data[j] > key; j -=gap)
{
data[j+gap] = data[j];
}
data[j+gap] = key;
}
}
概念很简单,就是先跳着排,然后跳跃排序顺序逐渐变短

浙公网安备 33010602011771号