以下是一个详细的在 Java 中实现二分查找法的示例代码
public class BinarySearchExample {
// 二分查找函数
public static int binarySearch(int[] array, int target) {
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
// 如果中间元素等于目标元素,返回中间索引
if (array[mid] == target) {
return mid;
} else if (array[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
// 未找到目标元素,返回-1
return -1;
}
public static void main(String[] args) {
int[] array = {
1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int target = 7;
int result = binarySearch(array, target);
if (result!= -1) {
System.out.println("目标元素在数组中的索引为:" + result);
} else {
System.out.println("目标元素不存在于数组中");
}
}
}
在上述代码中,binarySearch
方法实现了二分查找的逻辑。它通过不断将查找范围缩小一半,直到找到目标元素或确定目标元素不存在。
在 main
方法中,我们创建了一个有序数组和目标元素,然后调用 binarySearch
方法进行查找,并根据结果输出相应的信息。
二分查找的关键在于通过比较中间元素与目标元素的大小,来确定下一步应该在左半部分还是右半部分继续查找。这种方法的时间复杂度为 $O(\log n)$,效率较高,但前提是数组必须是有序的。