当前位置:K88软件开发文章中心编程全书编程全书02 → 文章内容

希尔排序算法

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-4 9:09:51

-->

[t]算法思想[/t]

希尔排序属于插入类排序,是将整个有序序列分割成若干小的子序列分别进行插入排序。具体方法是先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2

[t]程序如下:[/t]
可直接修改“直接插入排序

#include
#define N 10
void shellsort(int a[])
{
int i,j,temp,gap=N;
do{
gap=gap/2;
for(i=gap;i<N;i++) if(a[i]<a[i-gap]) { temp=a[i]; for(j=i-gap;a[j]>temp;j-=gap)
a[j+gap]=a[j];
a[j+gap]=temp;

}
}while(gap>1);

for(i=0;i<N;i++) printf(“%d “,a[i]);
}
int main()
{
int a[N]={10,9,8,7,6,5,4,3,2,1};
shellsort(a);
return 0;
}


希尔排序算法