void Shell_Sort(int a[],int n)
{
int i,j,gap = n / 2;//初始增量gap为元素个数的一半
while(gap > 0)
{
i = 0;//初始时i指向第一组的第一个元素
while(i < gap)
{//将组内剩余元素插入到有序子序列中
for(i += gap;i < n;i += gap)
{
int temp = a[i];//保存插入元素
for(j = i - gap;temp < a[j] && j >= 0;j -= gap) a[j + gap] = a[j];//元素后移
a[j + gap] = temp;//当temp>=a[j]时,j会减gap个位置,因此(j+gap)为真实插入位置
}
i++;//对下组子序列进行插入排序
}
gap /= 2;//增量减半
}
}
希尔排序函数实现
于 2023-06-10 22:33:33 首次发布