直接插入排序

直接插入排序是在一个有序的序列中插入一个记录,从而得到一个新的有序表。

一般情况下,第i趟直接插入排序会进行以下操作,在含有i-1个记录的有序序列ar【1..i-1】中插入一个记录ar【i】后,变成含有i个记录的有序子序列ar【1..i】通常情况下会有一个监视哨(通常会把arr【0】空出来作为监视哨),在从第i-1个记录往前搜索的过程中,同时后移记录,直到找到第i个记录所在的位置,整个排序过程要进行i-1趟插入过程,先将序列中的第一个元素看作一个有序序列,然后从第二个记录开始依次插入,算法代码如下(该代码监视哨用变量temp而非arr【0】

如果是一个数组要使用直接插入排序的话,显然0下标的位置不会空出来,这时可以另外设置一个监视哨。

我们用一维整型数组{3,5,2,4,7,0,9,6,8}为例来说明该排序过程

首先我们把3看作一个有序序列,把5插入该有序序列形成下图第二行用黑色下划线标注的有两个记录的有序序列{3,5}过程中i为1,由于5比3大,因此直接执行下一次循环,插入2时i为2,2小于5,把2放入监视哨中(红色方框内为监视哨),然后从i-1的位置向前遍历并将该位置元素后移(要比较的数已经放入监视哨中,不会被覆盖),直到找到其合适的位置将其插入,然后依次插入剩余所有元素即是直接插入排序的所有步骤

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值