二分总结(超详细版)四大模块,10分钟带你学会二分(一)

一.二分查找

1.二分查找:折半查找 (Binary Search) ,它是一种效率较高的查找方法。但是,折半查找要求线性 表必须采用顺序存储结构,而且表中元素按关键字有序排列。
2.算法思想:二分查找:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果 中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找 不成功。
3.算法概括:要求:在一个序列 A 中查找x,能找到返回x 在序列 A 中所处的位置,找不到返回-1实现:对 a 序列按照升序排列;每次查询序列中点:m= (l+r)/2;如果中点元素 a[m]==x;找到 x,返回 x 所在的位置m;如果中点元素 a[m]>x;更新查找区间右端点:r=m;//因为序列有序,m~n 之间的所有 元素一定大于x,无需再进一步查找如果中点元素 a[m]<x;更新查找区间左端点:l=m+1;//因为序列有序,1~m 之间的所 有元素一定小于x,无需进一步查找。重复上述过程,知道找到x 或者查找区间已经为空。
4.代码实现://在序列 a 中查找元素 x 找到返回所在位置 找不到返回-1

二.二分查找注意事项:

1.序列 a 中的所有元素都是唯一的,都是不同的;否则无法确定 x所处的位置。

2.使用二分查找的前提是:a 序列必须有序!二分查找需要排序。

3.查找区间为 l~r;其中r 表示的查找区间终点的下一个位置;l==r 时表示查找区间为空, 停止查找4.二分查找时间复杂度:log2(n)三.二分查找使用场合1.元素查找需要在序列中查找某个元素,查找相关题型,可以考虑使用二分,通常用于优化,避免超时。2.判断元素是否存在优先考虑能否使用标记数组,能用标记数组,优先使用标记数组;如果查找的是字符串或者数据范围太大,无法使用标记数组,考虑使用二分查找

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值