C语言之希尔排序法(4)

希尔排序(ShellSort)是插入排序的一种 是针对直接插入排序算法的改进算法先将要排序的一组数按某个增量gap分成若干组,每组中记录的下标相差gap.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。


算法代码:

//希尔排序法
void Shell_Sort(int *a,int len)
{
int i,j,k,temp;
for(i=len/2;i>0&&i<len;i=i/2)
{
for(j=i;j<len;j++) //i=5:5,6,7,8,9,10
//i=2:2,3,4,5,6,7,8,9,10
{
temp=*(a+j);
for(k=j-i;k>=0&&temp<*(a+k);k-=i) //i2:挑选0,2,4,6,8,10比较
{
*(a+i+k)=*(a+k);
}
*(a+k+i)=temp;
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int a[]={12,3,23,4,54,21,65,23,32,55};
int len=sizeof(a)/sizeof(int);
int i;

for(i=0;i<len;i++)
printf("%d\t",a[i]);

Shell_Sort(a,len);

for(i=0;i<len;i++)
printf("%d\t",a[i]);

return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值