插入排序与希尔排序

插入排序就像打“斗地主”一样,手中的牌按大小顺序排列,当新拿到一张牌,插入手中合适的位置。对于数组的插入排序,在新数据插入到合适位置之前,必须给该数据腾出空间(需要对大于该数据的原数据进行移位)。
插入排序的原理相对较简单,插入排序对于有序的序列效率很高,详见下面代码。

希尔排序是插入排序的加强版,希尔排序增加了一个“步长”(也有的叫增量),既将现有的数据按照一定的步长分组,对该组内的数据进行排序;这个“步长”也会随着每次组内排序完毕重新生成新的步长(步长渐短),直到最后步长为“1”。
下面用以下数据为例:
         int array[10] = {9,8,7,1,2,3,6,5,4,0};
当step = 10/2,          {9,3},{8,6},{7,5},{1,4},{2,0}各为一组,分别插入排序
结果:  array[10] = {3,6,5,1,0,9,8,7,4,2};
当step = 5/2,            {3,5,0,8,4},{6,1,9,7,2}各为一组,分别插入排序 
结果:  array[10] = {0,1,3,2,4,6,5,7,8,9};
当step = 2/2,            {0,1,3,2,4,6,5,7,8,9}为一组,进行插入排序 
结果:  array[10] = {9,8,7,1,2,3,6,5,4,0};
初次看“插入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值