付费节点推荐
免费节点
节点使用教程
[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;
}
评论前必须登录!
登陆 注册