【数据结构】插入排序(原理)

提示:我们介绍的都是基于顺序存储结构而言的,且是升序排序。

一、直接插入排序

①、哨兵模式

所谓的哨兵模式,就是说我们将待插入的元素提前存储在index=0的位置。

在插入排序的时候,我们总是从index=1的位置进行取待插入元素A(总是认为第一个元素是已经排好序的元素),将带插入元素A从原本的位置从后往前依次与前面的元素进行比较(待插入元素前面的元素已经排好序了),直到找到不小于A的元素B,将A插入到B的后面(这是一种排序算法稳定的算法)。

在这里插入图片描述

②、非哨兵模式

所谓的非哨兵模式,就是说我们将待插入的元素不提前存储在index=0的位置,而是存储在临时变量中。

比较思想同上。
在这里插入图片描述

二、折半插入排序

折半插入排序与直接插入排序的区别就在于在获取待插入位置的发方式的不同。

因为待插入元素前面的元素已经排好顺序了,所以我们才可以使用折半查找的方式获取待插入元素的插入位置。折半插入排序也是可以分为"哨兵模式"和"非哨兵模式"。在这里我就不重复造轮子了,不再过多赘述了。

我们在使用折半查找的方式寻找待插入位置的时候,我们需要注意:当待插入元素与折半查找中所匹配到的元素相同是我们依然要进行下一次比较,原因我们需要保证排序算法的稳定性。 这一点大家可以思考一下。

在这里插入图片描述


✈ ❀ 希望平凡の我,可以给你不凡の体验 ☂ ✿ ,白嫖有罪 ☠ ,记得关注哦 ❥(^_-)
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值