编写一个Java程序,实现以下功能: 输入:用户输入一个已排序的整数数组和一个目标值。 查找:通过二分查找算法在数组中寻找目标值,返回目标值所在的索引位置。如果目标值不存在,输出“未找到目标值”。 输出:输出目标值的索引位置,或者提示目标值不存在。
时间: 2024-10-21 19:14:13 浏览: 26
java 折半查找法(二分查找)实例
5星 · 资源好评率100%
在Java中,你可以使用下面的代码来实现这个功能:
```java
import java.util.Scanner;
public class BinarySearch {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入已排序的整数数组(以逗号分隔):");
String arrayInput = scanner.nextLine();
int[] sortedArray = parseArray(arrayInput);
System.out.println("请输入目标值:");
int targetValue = scanner.nextInt();
int index = binarySearch(sortedArray, targetValue);
if (index != -1) {
System.out.println("目标值 " + targetValue + " 的索引位置是: " + index);
} else {
System.out.println("未找到目标值");
}
}
// 解析输入字符串为整数数组
private static int[] parseArray(String input) {
String[] parts = input.split(",");
int[] array = new int[parts.length];
for (int i = 0; i < parts.length; i++) {
array[i] = Integer.parseInt(parts[i]);
}
return array;
}
// 二分查找函数
private 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) {
left = mid + 1;
} else {
right = mid - 1;
}
}
// 如果没有找到目标值,返回-1
return -1;
}
}
```
在这个程序中,我们首先从用户那里获取已排序的整数数组和目标值,然后利用`binarySearch`函数执行二分查找。如果找到目标值,我们就返回它的索引;如果没有找到,就输出相应的提示。
阅读全文