用java实现一个二分查找
时间: 2023-10-27 13:21:09 浏览: 86
以下是Java实现的二分查找示例代码:
```java
public class BinarySearch {
// 在有序数组中查找目标值,返回目标值的索引,若不存在则返回-1
public static int binarySearch(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] nums = {1, 3, 5, 7, 9};
int target = 3;
int index = binarySearch(nums, target);
if (index != -1) {
System.out.println("目标值" + target + "的索引为:" + index);
} else {
System.out.println("目标值" + target + "不存在!");
}
}
}
```
其中,`binarySearch`方法接收一个有序数组和目标值,返回目标值的索引,若不存在则返回-1。具体实现过程是:
1. 初始化左右边界,即最左边的索引与最右边的索引。
2. 进入循环,只要左边界小于等于右边界,就继续查找。
3. 计算中间索引,即左右边界之和的一半。
4. 如果中间值等于目标值,直接返回中间索引。
5. 如果中间值小于目标值,说明目标值在中间值的右侧,将左边界移动到中间索引的右侧。
6. 如果中间值大于目标值,说明目标值在中间值的左侧,将右边界移动到中间索引的左侧。
7. 如果循环结束,仍然没有找到目标值,返回-1。