希尔排序算法

付费节点推荐


免费节点


节点使用教程


[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;
}

未经允许不得转载:Bcoder资源网 » 希尔排序算法

相关推荐

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册