二分法是一种十分高效的查找方式,常用于数据量很大时进行查找,二分法用于在单调的序列内快速查找某个值,方法是序列分为两半,判断要查找的值在哪个区间,舍弃另一半,每次查询都会舍弃序列的一半
但有前提是(1)数据量庞大,需要缩短时间复杂度;(2)有序数组;(3)需要找到某一个值或某一个位置时
假如我从一个数组中寻找查找一个数下,先将这个有序数组的第一个数设为frist并赋值给first,最后一个数设为last并赋值给last,最中间的那个数设为middle,middle=(first+last)/2. 比较给定值firstx与middle值的大小;
1)middle=(first+last)/2;
2)若middle == x ,则查找成功,结束查找;
若middle> x ,则表明给定值x只可能在区间first ~ middle-1内,修改检索范围。令last=middle-1,first值保持不变;first
若middle< x ,则表明给定值x只可能在区间middle~last内,修改检索范围。令first=middle+1,last值保持不变。
3)比较当前变量first和last的值,若first≤last,重复执行第1)、2)两步,若first>last,表明数组中不存在待查找的元素,查找失败。