关于二分查找法
二分查找法主要是解决在“一堆数中找出指定的数”这类问题。
而想要应用二分查找法,这“一堆数”必须有一下特征:
1,存储在数组中
2,有序排列
所以如果是用链表存储的,就无法在其上应用二分查找法了。
至于是顺序递增排列还是递减排列,数组中是否存在相同的元素都不要紧。不过一般情况,我们还是希望并假设数组是递增排列,数组中的元素互不相同。
二分查找法的基本实现
这里有一个需要注意的地方,在循环体内,计算中间位置的时候,使用的是这个表达式:
mid= (left + right) / ;
假如,left与right之和超过了所在类型的表示范围的话,那么middle就不会得到正确的值。
所以,更稳妥的做法应该是这样的:
mid = left + (right - left) / ;
那么BinarySearch的核心代码如下:
int BinarySearch(int array[], int low, int high, int target) { ; int mid; while (high >= low) { mid = (low + (high - low) / ); ; ; else //find the target return mid; } ; }