使用java实现二分查找
时间: 2023-07-11 22:27:36 浏览: 71
分别使用Java和Python实现二分查找算法
好的,下面是一个使用Java实现的二分查找的示例代码:
```java
public class BinarySearch {
public static int binarySearch(int[] array, int target) {
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (array[mid] == target) {
return mid;
} else if (array[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] nums = {1, 3, 5, 7, 9, 11, 13};
int target = 7;
int index = binarySearch(nums, target);
if (index == -1) {
System.out.println("目标元素不存在");
} else {
System.out.println("目标元素在数组中的索引为: " + index);
}
}
}
```
该代码中,`binarySearch`方法接收一个已排序的整数数组和一个目标值,返回目标值在数组中的索引。如果目标值不存在于数组中,则返回-1。
在方法中,我们使用`left`和`right`两个指针表示当前搜索区间的左右边界。然后,我们使用`while`循环不断缩小搜索范围,直到找到目标元素或搜索区间为空。
在每次循环中,我们首先计算中间元素的索引`mid`。如果中间元素等于目标值,则直接返回该元素的索引;否则,如果中间元素小于目标值,则将搜索区间缩小到右半部分;如果中间元素大于目标值,则将搜索区间缩小到左半部分。
最后,如果循环结束时仍然没有找到目标元素,则返回-1表示目标元素不存在于数组中。
在上面的示例代码中,我们使用`main`方法来测试`binarySearch`方法。我们创建一个已排序的整数数组`nums`,并在其中搜索目标值`7`。如果找到了目标值,则输出其在数组中的索引;否则,输出“目标元素不存在”。
阅读全文