1. 概述
二分查找算法的介绍、思想及实现方法参阅如下文章:
二分查找
折半查找、插值查找以及斐波那契查找
2. 代码实现
public int binarySearch(int[] A, int target, int n){
int low = 0, high = n, mid;
while(low <= high){
mid = low + (high - low) / 2;
if(A[mid] == target){
return mid;
}else if(A[mid] > target){
high = mid - 1;
}else{
low = mid + 1;
}
}
return -1;
}
注意:
- 循环的判定条件是:
low <= high
- 为了防止数值溢出,
mid = low + (high - low)/2
- 当
A[mid]
不等于target
时,high = mid - 1
或low = mid + 1