二分查找
前提:给定一个内含n个元素的有序数组A,满足A0<=A1<=A2<=...<=A(n-1),一个待查值target
1.设置 i = 0 , j = n-1
2.如果 i > j ,结束查找,没找到
3.设置 m = floor((i+j)/2),m为中间索引,floor是向下取整
4.如果target < Am 设置 j = m - 1 , 跳到第二步
5.如果Am < target 设置 i = m + 1 ,跳到第二步
6.如果target = Am , 结束查找,找到了
点击查看代码
public static int binarySearchBasic(int[] a, int target){
int i = 0, j = a.length() - 1; //设置指针和初值
while(i<=j){ //i~j范围内有东西
int m = (i+j)/2; //int m = (i+j)>>>1; 可用这个进行替换
if(target < a[m]){ //目标在左边
j = m - 1;
}else if(a[m] < target){ //目标在右边
i = m + 1;
}else{ return m ;} //找到了
}
return -1
}
浙公网安备 33010602011771号