版权属于:
Hello World
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
被查找的数组必须是有序。
public class HelloWorld{
public static void main(String[] args){
//被查找数组,必须是有序
int[] arr = {1,3,5,7,9,11,13,14};
//被查找目标
int target = 14;
//定义左、右、中间下标
int start = 0;
int end = arr.length - 1;
int mid;
//循环结束条件:左下标 小于等于 右下标。
while(start <= end){
mid = (start + end) / 2; //初始化中间下标
//如果中间元素和目标相同,直接return。否则继续判断
if(target == arr[mid])
{
System.out.println("ok, target = " + mid);
return;
}
else if(target > arr[mid])
{
//如果目标大于中间值,说明目标在中间值的右边。
//把左下标改到中间下标的后一位。
start = mid+1;
}
else
{
//如果不符合上面,目标就一定小于中间值。
//把右下标改为中间下标的前一位
end = mid-1;
}
}
//若程序执行到这里,说明没找到。
System.out.println("NO");
}
}
评论 (0)