//增量gap: length/2
void shellsort(int n, int ar[])
{
int gap,i,j;
for(gap=n/2;gap>=1;gap/=2)
for(i=0;i<n;i++) /* i为希尔排序的第一个元素 */
insertion_sort_sh(n,ar,i,gap);
}
void insertion_sort_sh(int n,int ar[],int a,int gap)
{
int i,j,key;
for(j=a+gap;j<n;j+=gap)
{
key = ar[j];
i = j-gap;
while(i>=0 && ar[i]>key)
{
ar[i+gap] = ar[i];
i = i-gap;
}
ar[i+gap] = key;
}
}
希尔排序 --C语言实现
最新推荐文章于 2024-06-30 15:13:33 发布