void ShellSort(int A[],int n)
{
//A[0]只是暂存单元,不是哨兵,当j=0时,插入位置已到
int dk,i,j;
for(dk = n/2;dk>=1;dk = dk/2)//增量变化
{
for(i = 0;i<=n;i++)
{
if(A[i]<A[i-dk])//需将A[i]插入有序增量子表
{
A[0] = A[i];//暂存在A[0]
for(j = i-dk;j>0 && A[0]<A[j];j-=dk)
A[j+dk] = A[j]; //记录后移,查找插入位置
A[j+dk] = A[0];
}
}
}
}
希尔排序代码
最新推荐文章于 2024-07-24 19:35:30 发布