基本思想,希尔排序就是要有一个增量,然后增量是在不断缩小的,比如第一个是gap=len/2,第二个就是gap=gap/2。。直到增量缩小到1.举例len=10;第一次增量为5,那么就把这个数据分为5组,每组之间进行插入排序。第二次把这个数据分为2组,在进行插入排序,第三次分为1个组,在进行插入排序。这个算法是因为每一轮排序之后,这个数据是越来越接近”有序“。
void Shell_Sort(int Data[], int num)
{
int Gap;
int i, j;
int KeySet;
for (Gap = num / 2; Gap > 0; Gap = Gap / 2)
{
for (i = Gap; i < num; i++)
{
KeySet = Data[i];
j = i - Gap;
while (j >= 0 && Data[j] > KeySet)
{
Swap(&Data[j], &Data[j + Gap]);
//j = j - Gap;
}
}
}
}
如果对您的问题有帮助的话可以帮忙点个赞,谢谢~QQ群:540093471 有问题大家可以一起交流沟通!