二分法总结

Posted by 大雁小鱼的博客 on May 30, 2018

二分法总结

二分法是一种常见的算法思路,其根本的思想是:任意一个值可以将全部数据分成2拨,A或者B。算法首先随机选定一个值,判定它与目标值的关系,如果符合目标,则直接输出结束,如果不符合,则根据环境信息,可以得出目标值存在于其中的某一拨中,要么A要么B,于是缩小范围继续查找即可最终找到目标值。

例子1:

在一个有序的整数数组中查找某个给定的整数。
关键点分析:对于任意一个数字C,总可以将一个有序的整数数组分成小于C的部分和大于等于C的部分。于是可用二分法求解。

例子2:

在一个有序但是经过旋转的数组中,查找最小值。比如[6,7,8,9,1,2,3,4,5]查找得最小值为1
关键点分析:定义left是该数组的最左端下标,right是该数组的最右端下标,于是对于任意一个数组中的数字C(假定该数字的下标是N),如果array[left]<C && C>array[right],则要查找的数字一定在array[N+1,right]当中,否则一定在array[left,N]当中,于是可用二分法求解。