二分查找法:
又叫作折半查找法,它是在有序数组中查找指定数据的检索算法,比如一个数组(线性表)长度10万,查询某个数,二分查找首先把该线性表折半查询,找到这个中间位置对比看是不是,如果不是,再一次折半,重复搞下去,直到找到数据,每一次折半都踢出了一半的数据,不用一个一个对比找,所以查找效率相对高效。
两个条件:1:必须是线性表(数组),2:必须是有序存储。
算法:left:数组开始位置;right:结束位置;mid:中间数(折半);
mid = (left+right)/2
if mid对应的val(mid相当于数组的key)大于 要查找的val:数据在前半段查找,left不变,right = mid - 1
if mid对应的val(mid相当于数组的key)小于 要查找的val:数据在后半段查找,right不变,left = mid +1
如果 == 那么就找到了该值!
如果 left 大于 right,说明数据不存在。(如果不满足上面两个条件,也可能出现这种情况,数据在,但是查不到。)
举例:首先定义一个数组:$list&