用Java实现二分查找
时间: 2023-11-05 07:10:20 浏览: 75
二分查找(Binary Search),也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。它的搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每次比较都使搜索范围缩小一半。
下面是Java实现二分查找的示例代码:
```java
public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
这段代码中,我们首先定义了左指针left和右指针right,分别指向数组的第一个元素和最后一个元素。然后我们通过while循环不断缩小搜索范围,直到找到目标元素或者搜索范围为空。
在循环中,我们首先计算出中间元素的索引mid。如果中间元素正好是目标元素,那么直接返回mid。如果目标元素比中间元素大,那么说明目标元素可能在右半部分,我们就将左指针left移动到mid+1的位置。如果目标元素比中间元素小,那么说明目标元素可能在左半部分,我们就将右指针right移动到mid-1的位置。这样反复循环,直到找到目标元素或者搜索范围为空。
最后,如果没有找到目标元素,那么返回-1表示查找失败。
阅读全文