【Java】5.1 二进制搜索

【概述】
在之前,我们的搜索总是使用线性搜索来完成————它的效率是很低的(毕竟是从头开始一个一个找)
我们可以使用另一种称为二进制搜索的搜索算法,该算法效率更高
二进制搜索是一种旨在在排序数组中查找值的搜索算法
二进制搜索通过反复将列表中,可能包含目标参数的部分一分为二,一直循环对半分的操作,直到找到该数值(二分法查找)
在搜索范围大的时候,与线性搜索相比,二进制搜索算法一般能节省更多时间

如果一个列表列表由1到1000之间的数字组成,那么二进制搜索应该在10遍及以下的次数找到它,因为2的十次方是1024

【二进制算法执行】
假如该数值是从小到大排序的
1.设定搜索数组A范围,最小值low=0,最大值high = A.length-1,初始的中间值middle = (low+high)/2,其实就是high/2
2.设定要找到数target
3.将target与数组的middle位比较,即判断target和A[middle]的大小关系
如果target大:low = middle+1 ,代表着我们把搜索范围减小到middle大小以上的位置
如果target小:high = middle-1 ,代表我们把搜索范围减小到middle大小以下的位置
如果target和A[middle]相等,
那就是找到了
,搜索结束
4.除非在3中找到了目标数,否则每进行一次3便更新一次low/high的位置,再进行循环
5.在完成了一定次数的搜索之后,如果仍然没有找到结果,那么就是所搜索的目标数在该数组中不存在

代码如下:

posted @ 2021-04-25 20:24  RetenQ  阅读(275)  评论(0编辑  收藏  举报