折半插入排序

折半插入算法实现

在这里插入图片描述
折半插入就是对有序队列进行折半查找找到插入位置
将要插入的数据放置哨兵位
L[0] = L[i]

7   3   5   10   16   7   32   83   23   54   29   96
↑  low           i-1  i
哨兵             high

mid = (low+high)/2
L[0] > mid
low = mid+1

0   1   2    3    4   5    6    7    8    9   10   11
7   3   5   10   16   7   32   83   23   54   29   96
↑      mid  low  high i
哨兵             

mid = (low+high)/2
L[0] < mid
high = mid - 1

0   1   2    3    4   5    6    7    8    9   10   11
7   3   5   10   16   7   32   83   23   54   29   96
↑      high low       i
哨兵         mid             

high < low 结束循环
插入位置为 high + 1

将high+1这个位置腾开
从 i+1 开始 到 high + 1结束 往前挪动一个位置

0   1   2    3    4    5    6    7    8    9   10   11
7   3   5   10   10   16   32   83   23   54   29   96
↑      high      i-1  i
哨兵                      

L[high + 1] = L[0]

0   1   2    3    4    5    6    7    8    9   10   11
7   3   5    7   10   16   32   83   23   54   29   96
↑      high      i-1  i
哨兵       high+1                   

在这里插入图片描述

折半插入排序-算法分析

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值