排序一(直接插入排序)

    如何理解直接插入排序?它需要几步来完成?是像字面意思那样直接插入到我们能看到的大小位置么?怎么个直接法?

    我们先来看一下概念

    直接插入排序:在插入第i个记录时,R1,R2....Ri-1均已排好序,这时将Ri的关键字Ki依次与关键字Ki-1,Ki-2等进行比较,从而找到应该插入的位置并将Ri插入,插入位置及其后的记录依次向后移动。

    读完上面的概念我们就清楚了,直接插入排序需要四步

①、前提:插入前已排好序

②、比较:逐个从后面开始比较

③、直接插入:通过比较找到应该插入地方直接插入

④、排序:插入位置及其后的记录依次向后移动

    所以,你是否get到了这个所谓的直接插入排序呢。就是直接插入到我想要插入的位置,其他的内容逐个向后移动!

 

    但以上的排序有一个前提,那就是第一步已排好序,那如果初始状态未排好序要如何处理?

    比如一个序列初始状态为:57  68   59  52 

    我们要如何进行直接插入排序呢?

    它的时间复杂度是多少呢?比如我们有n个元素

    已排好序时:最好的状态是比较一次就达到了结果,,时间复杂度为O(1),而最差的状态是从最后一个元素N比到了最前面第一个元素1,这时的时间复杂度为O(n)。

    未排好序时:首先每个元素都要进行一次排序,时间复杂度为O(n),之后再加上已排好序后的n次比较,所以最后的时间复杂度为O(n^2)。

    所以直接插入排序最后的时间复杂度为O(n^2)。

    空间复杂度:在比较的过程中始终是一个元素一个元素的比较,所以这里的空间复杂度为O(1)。


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elsa~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值