编写一个Java程序,实现以下功能: 输入:用户输入一个已排序的整数数组和一个目标值。 查找:通过二分查找算法在数组中寻找目标值,返回目标值所在的索引位置。如果目标值不存在,输出“未找到目标值”。 输出:输出目标值的索引位置,或者提示目标值不存在。
时间: 2024-11-09 08:29:08 浏览: 17
编写Java程序实现二分查找可以按照以下步骤进行:
```java
import java.util.Scanner;
public class BinarySearch {
public static int binarySearch(int[] arr, int target) {
if (arr == null || arr.length == 0) {
System.out.println("数组为空,无法进行查找");
return -1;
}
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;
}
}
// 没有找到目标值
System.out.println("未找到目标值 " + target);
return -1;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入已排序的整数数组(用逗号分隔):");
String input = scanner.nextLine();
String[] arrayInput = input.split(",");
int[] arr = new int[arrayInput.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(arrayInput[i]);
}
System.out.print("请输入目标值:");
int target = scanner.nextInt();
int resultIndex = binarySearch(arr, target);
if (resultIndex != -1) {
System.out.println("目标值 " + target + " 的索引位置是:" + resultIndex);
}
scanner.close();
}
}
```
在这个程序中,首先从用户那里获取输入的数组和目标值,然后使用`binarySearch`函数进行查找。如果找到了目标值,就返回其索引;如果找不到,则输出提示信息。
阅读全文