public class binarySearch {
public static void main(String[] args) {
int[] nums = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
binarySearch b = new binarySearch();
int location = b.bs(nums, 0, nums.length - 1, 8);
System.out.println(location);
}
/**
nums 被查找数组
l 左指针
r 右指针
ans 目标值
*/
public int bs(int[] nums, int l, int r, int ans) {
int m;
//标志位 在数组中找到结果后 结束循环
boolean flag = true;
//找到的值的下标
int location = 0;
//循环结束条件 找到了 或 整个数组都找不到
while (flag && location != -1) {
//数组中间下标
m = (l + r) / 2;
//当右指针 移动到 左指针 左边时 表明整个数组都找不到目标值ans 结束循环
if (l > r) {
location = -1;
}
//找到目标值 结束循环
else if (nums[m] == ans) {
flag = false;
location = m;
}
//m下标对应的值 > 目标值 右指针左移
else if (nums[m] > ans) {
r--;
}
//m下标对应的值 > 目标值 左指针右移
else {
l++;
}
}
return location;
}
}
最容易理解的二分查找代码实现 Java
最新推荐文章于 2024-06-14 15:02:13 发布