数据结构之插入排序

插入排序

在这里插入图片描述

一种思想我们所在指向位是需要进行插入的数据
我们锁指向位置前的数据是被插入的数据组
我们根据与前面的数据元素一个个比较来确定插入位置的排序
比如现在的76比前面的97小,97进行一个右移,就是赋值给data[4](我这里猜测是76应该是赋给一个变量了),然后在与65比较比65大
所以76插入到65和97中间
关于最后的49,只把比关键值大的值右移一位
所以最开始在7位置上的49最后应该在4位置
在这里插入图片描述

算法实现

一般是这种
在这里插入图片描述
带哨兵模式
在这里插入图片描述
就是把temp变为data[0]实际元素从data[1]开始存储

效率分析

空间复杂度 O(1)
在这里插入图片描述
时间复杂度
主要是来自对比关键字和移动元素导致的时间复杂度
在这里插入图片描述
最好的情况在这里插入图片描述
最坏的情况(一般就写这个)
在这里插入图片描述
在这里插入图片描述

优化-折半插入排序

就是之前的对比
用的顺序查找,但是其实我们指向元素前的元素
已经是一个有序的数列了,所以可以使用折半查找进行对比

在这里插入图片描述
在这里插入图片描述
把[low,i-1]元素右移
然后[low]=[0] (哨兵模式下)

相等的情况-不会停止查找
在这里插入图片描述

在这里插入图片描述
在右半区间查找使low=mid+1
在这里插入图片描述

在这里插入图片描述
和之前处理一样low右边右移
[mid]=[0]

小结

在这里插入图片描述

代码实现

在这里插入图片描述

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小袁拒绝摆烂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值