前提
1)序列为有序序列
2)序列中没有重复元素:因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的
3)查找的数量只能是一个,而不是多个
过程
先求出数组长度及其中间值,循环从其中间值开始比较左右两边数组内元素若为查找的元素则输出,若无相同元素则输出-1
int search(int[] num, int t){
int l = 0, r = num.length - 1;
while(l <= r){
int m = l + (r-l) / 2;
if(num[m] == t){
return m;
}else if(num[m] < t) {
l = m + 1;
}else {
r = m - 1;
}
return -1;
}