java实现二分法对有序数列查找
时间: 2023-05-29 11:03:10 浏览: 130
以下是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; // target not found
}
public static void main(String[] args) {
int[] array = {1, 3, 5, 7, 9};
int target = 5;
int result = binarySearch(array, target);
if (result == -1) {
System.out.println("Target not found");
} else {
System.out.println("Target found at index " + result);
}
}
}
```
在上面的代码中,`binarySearch`方法接受一个有序整数数组和一个目标整数作为参数,返回目标整数在数组中的索引(如果存在),否则返回-1。方法使用while循环进行二分查找,每次将数组分成两半,并将目标整数与数组的中间元素比较,以确定它在哪一半。如果目标整数等于中间元素,则返回中间元素的索引。如果目标整数小于中间元素,则在左半部分继续查找。如果目标整数大于中间元素,则在右半部分继续查找。如果在循环结束时仍未找到目标整数,则返回-1。
在`main`方法中,我们创建一个有序整数数组和一个目标整数,并调用`binarySearch`方法来查找目标整数在数组中的索引。如果目标整数不存在于数组中,则输出“Target not found”,否则输出“Target found at index [index]”。在上面的示例中,我们查找整数5在数组[1, 3, 5, 7, 9]中的索引,结果为2,因为5在数组中的第3个位置(从0开始计数)。
阅读全文