//希尔排序是对直接插入排序的该进,直接插入排序每次的j只增减1,
//只要把1改成gap,每次gap=gap/3 + 1;直至gap不大于1,为止,这样的
//原来的直接插入排序就成了希尔排序
#include<stdio.h>
void InsertSort(int k[],int n)
{
int i,j,temp;
int gap = n;
do{
gap = gap/3 + 1;
for(i=gap; i<n;i++)
{
if(k[i]<k[i-gap])
{
temp = k[i];
for(j=i-gap; k[j]>temp ;j-=gap)
{
k[j+gap] = k[j];
}
k[j+gap] = temp;
}
}
}while(gap>1);
}
int main()
{
int i,a[10] = {5,3,2,1,4,9,6,8,7,0};
InsertSort(a,10);
for(i=0; i<10;i++)
printf("%d",a[i]);
return 0;
}
希尔排序
最新推荐文章于 2025-01-21 00:21:24 发布