java-二分查找
/**定义三个指针 right ,left,mid
mid=(left+right)
while循环,当right<left时结束循环。
当当前数字比mid小时,right向前移动,right=mid-1
当当前数字币mid大时,left向后移动,left=mid+1;
循环中也要注意mid的及时更新
*/
public void b(int[] nums, int target) {
int left = 0;
int right = nums.length-1;//定义三个指针
int mid=(left+right)/2;
while (true) {//循环开始
if (target == nums[mid]) {//当target等于mid时,输出并break结束循环
System.out.println(mid);
break;
}else if (target < nums[mid]) {//当target小于mid时,
right = mid-1;//right指针向前移动
mid=(right+left)/2;//及时更新mid!!!更新完的mid可能大于,小于,等于,根据不同的情况又进入到了不同的if语句中
if(right<left){//当right<left也就是数字已经被遍历完了
System.out.println("该数字不存在");
break;
}
} else if (target > nums[(p + q) / 2]) {//大于的情况
left = mid+1;
mid=(right+left)/2
if(right>left){
System.out.println("该数字不存在");
break;
}
}
}