【算法】二分查找

算法系列二:二分查找

一、原理

二、查找过程

三、方法实现


一、原理

二分查找 一定是在 有序数组里 进行的(我们这里讲升序情况),定义左右指针 指向要查找数据当前能确定的 可能在数组里的 下标范围两端每一次查找时 查找范围中间的对象数据,即(left + right)/2 下标位置的数据

left+right 可能和是奇数,(left + right)/2 对应的下标不在当前范围正中间的位置(正中间的后一个位置),但并不影响二分,依旧是将数组跨分为两部分、每次划掉另一部分 近范围一半的数据 查找,只是划分时 能在当前能确定范围正中间位置查找并划掉部分 最好按顺序遍历查找 其实每次能砍掉的确定范围大小 是一个元素的量,而二分查找 每次查找能砍掉的确定范围大小 是当前范围一半元素的量,所以查找的效率是更加优秀的


二、查找过程

每一次取到范围中间的元素数据 进行比较,如果目标数据大于中间元素数据,说明目标数据 是在划分部分的右半部分(不包含当前拿来比较的中间元素),left左指针 移到当前拿来比较的中间元素右边一位,即lefty= 移到mid+1位置,现在能确定的 目标数据所在的范围 就划掉一半了,在[mid+1,right]范围之内,接着在新的这个范围内 重新进行下一次相同过程的查找,如果中间位置数据还不是,就继续砍一半范围,再在新的范围内再查找,从一开始的 整个数组范围内查找,到后面新的 很小的范围内 查找,直到找到为止 或left<right时 说明目标数据在数组里没有 为止,找到时返回目标数据的索引,没有找到就返回-1


三、方法实现

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值