希尔排序又称缩小增量排序,是对直接插入排序的优化
分析:
void ShellSort(int arr[], int size)
{
int i = 0;
int gap = 3;
while (gap > 0)
{
for (i = gap; i < size; i++)
{
int key = arr[i];
int end = i - gap;
//找插入位置
while (end >= 0 && key < arr[end])
{
//搬移数据
arr[end + gap] = arr[end];
end -= gap;
}
//插入元素
arr[end + gap] = key;
}
gap--;
}
}