排序算法_C++(一)插入排序之直接插入排序

        排序算法主要分为:插入排序,选择排序,交换排序,堆排序,基数排序等。本文想将这些排序写成一个系列,算法是按照自己的思路写的,没有把它作为教材的意图。水平一般,力图说的直白,易懂。

        首先从插入排序写,第一篇是直接插入排序。

        直接插入排序的思想简单说一下。将一个无序的数组a[n]看成两部分:有序表和无序表,通常是讲第一个元素a[0]作为有序表,a[1,..,n-1]是无序的。

排序开始:从i = 1,...n-1遍历,首先比较a[1] 与a[0]的大小(递增排列)a[1]>a[0],说明把a[1]从无序表中放入有序表中时,有序表内元素不需要移动,有序表变成{a[0],a[1]}。如果a[1] < a[0],说明有序表的元素应该是{a[1],a[0]},这就需要移动(大数往后移动,小数往前站),将a[1]存入临时变量,把a[0]放入a[1]的位置(a[0]往后撤一步),然后把临时变量里存的a[1]放到a[0]中,第一次遍历结束。红色表示元素是有序表中的元素,黑色表示是无序表的元素。

             i              0        1        2        3        4        5

       初始序列     21       25     3     *25    16       08

       第一趟         21       25     3     *2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值