直接插入排序算法

活动地址:CSDN21天学习挑战赛

目录

   一、前言

    二、直接插入排序思想

    三、直接插入排序待解决的问题

    四、实例

    五、算法性能分析

    六、总结

 一、前言:

           插入排序算法:直接插入排序算法和希尔排序,本文主要介绍直接插入排序算法

 二、直接插入排序的基本思想

   1、 基本思想:在插入第i个元素时,前(i-1) 个元素已经有序。                     

三、直接插入排序待解决的问题

  1、如何构造初始的有序序列

      将第一个记录看成有序序列,从第二个记录开始依次将元素插入到有序序列中。

      算法描述:

       for(i=2;i<=n;i++)

        {

            插入第i个记录;

        }    

  2、如何将待插入元素插入相应位置

      在有序区(r[1]~r[i-1])中插入r[i],首先找到第i个记录的正确插入位置,然后将r[i]插入到有序序        列中

   算法描述:

   r[0]=r[i]  j=i-1;

   while(r[0]<r[j])

  {

    r[j+1]=r[j];

     j--;

  }

3、思考

   r[0]的作用:

    (1)在查找嘻哈如位置的循环中r[0]起到监视哨(或者监视哨兵的作用)

      (2)  r[0]暂存r[i]的元素,避免了因元素的后移覆盖r[i]的值  

四、实例

   输入:2 4 6 8 0 14 12 16 

   输出从小到大的序列:0 2 4 6 8 12 14 16

   代码:

    

    运行结果:

     

 五、算法性能分析

    最好情况(正序):例如1、2、3、4、5、6

     比较次数:n-1 (共有n个元素)

     移动次数:2(n-1)

     时间复杂度:O(n)

   最差情况(逆序):例如6、5、4、3、2、1

     时间复杂度:O(n^2)

     平均情况:O(n^2)

六、总结

    直接插入排序算法简单、容易实现,适用于排序序列元素数目少或者待排序序列元素基本有序

    若待排序的元素数量较多,则大量的比较和移动会使排序效率很低。

     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值