2019/11/13 01-二分bisect

在这里插入图片描述在这里插入图片描述
有一个无序序列,对其先排序再输出新列表,在已排序的序列上插入数据相对来讲比较简单

已经排好了队,现在右边这么高的人进去,想要进入到合适的位置,从头开始找就比较费劲,应该有个中点的位置,引入折半查找,中点的位置(中点中值是两个概念在这里插入图片描述
给一个列表,前提是需要先排序
在这里插入图片描述
先算一个小规模的,遇到一个问题先缩小范围简单化计算,这次从左向右找,找到一个数和i比,假如是大于,大于中点这个数说明向右跑。
假如这个数是80要插入的话
修正重点,从右侧开始 low=mid+1=2
在这里插入图片描述
如果小于,就需要调整hight=mid,那么这样,循环条件跟low 和high有关系,肯定是小于等于,不可能大于,先试试小于,等于就重合了
用insert插入数据,在99前面在这里插入图片描述
**试试20,刚开始判断0小于2,
73大于20
到达else
high =mid =1
进入循环 low < high 0<1
mid=low+high = 0+1 =1 //2 =0
索引0对应的37 >20
进入else
hight =mid = 0
再进入循环:
low<high 0<0
不进入
再0前面插入数据,这样也可以 **
在这里插入图片描述
循环3个数据试试能否都插入进去
在这里插入图片描述
这样就循环插入
在这里插入图片描述
但是这样就出问题了在这里插入图片描述
100出了问题,就把100带入试试
mid 一开始=1
73<100
low=2
进入循环判断 low<heigh 2<2,但是实际还需要比一次,就需要high+1
2<3进入比一次
最后low =3
进入循环判断 3<3,不进入

在这里插入图片描述
带入20,是否还能不能可行
整除特性向下取,所以是可行的

在这里插入图片描述把减一去掉试试,等于length多+1,取到99这个位置,所以对已知最大序引是length-1,比它大的就是length+1
在这里插入图片描述
把-1去掉在这里插入图片描述在这里插入图片描述
所谓的2分是找的中点的位置,不是中值(中值是所有 数的平均数),确认中点,比它小的左边找,比它大的右边找,
左边还要确立个中点继续找

在这里插入图片描述
二分的思想就是每一次规模都是折半的

在这里插入图片描述
遍历的难度,是随着规模增大而增大O(n)),二分的则是O(logn)在这里插入图片描述在这里插入图片描述
二分的方式也只是提供了一种遍历,对于列表,插入数据,所有的数据都往后挪动

用上二分的前提是已经排序
在这里插入图片描述
当low不小于high,就说明不逼近了,重合了,就需要退出循环了

bisectv. 对半分; 二等分,提供了一些方法在这里插入图片描述在这里插入图片描述
首先需要排序,改成40试试
bisect是有重复值靠右插入,就是在后面插入
bisect_left ,有重复值的时候靠左插入

在这里插入图片描述
点击进入查看
在这里插入图片描述
默认是靠右插入
在这里插入图片描述
也是这种方法来写
在这里插入图片描述在这里插入图片描述
还提供了一个版本,hi给的是none,就取的是长度
在这里插入图片描述
在这里插入图片描述
做的是就地修改,等于inplace,等值情况下左边插入
在这里插入图片描述
最主要是可以指定范围,,知道在某个范围的,就可以调整在这里插入图片描述
二分是建立在已经排序的,但是没有排序其实也可以做二分。只不过插入的地方可能不对
在这里插入图片描述

一般二分的插入不推荐,insert_left/right,规模很大,整个序列都要向后跑,二分查找还是可以用的,找到这个数大致在什么位置还是可以的

在标准库,insert是习惯右边插入的
在这里插入图片描述在这里插入图片描述在这里插入图片描述
算法的核心是,折半至重合为止,在有序区用二分查找可以提高速度
在这里插入图片描述在这里插入图片描述
bisect,用于查找索引,insort 就地修改在这里插入图片描述
在这里插入图片描述
得到索引4,在这之外

在这里插入图片描述在这里插入图片描述
如果给88分,再右侧插入给的索引是3,给78,插入点就是2在这里插入图片描述
78分返回c。二分前提是已排序
在这里插入图片描述
规模大,又想快速找到位置,就可以用二分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值