编写 Java程序, 设计MyArray2类来实现以下要求: 使用二分法查询数组中的元素是否存在。数组元素个数可以由用户确定, 数组元素值也可由用户输入; 注意: 采用二分法对数组查询的前提条件是要求数组有序;
时间: 2024-11-06 10:21:25 浏览: 22
找出数组中的最大元素-java语言程序设计课件
在Java中,我们可以设计一个名为`MyArray2`的类,包含一个静态方法`binarySearch`用于实现二分查找算法。首先,我们需要从用户那里获取数组的大小和元素,然后创建一个有序的整数数组。接下来,我们按照二分查找的步骤来检查特定的元素是否在数组中。以下是具体的代码实现:
```java
import java.util.Scanner;
public class MyArray2 {
// 二分查找方法,数组必须是升序排列
public static boolean 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 true;
} else if (array[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return false;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数组的长度:");
int length = scanner.nextInt();
int[] array = new int[length];
System.out.println("请输入" + length + "个按升序排列的整数:");
for (int i = 0; i < length; i++) {
array[i] = scanner.nextInt();
}
scanner.nextLine(); // 消耗换行符
System.out.println("请输入你要查找的目标元素:");
int target = scanner.nextInt();
if (binarySearch(array, target)) {
System.out.println("目标元素在数组中,索引位于[" + (array.length - 1) + "]");
} else {
System.out.println("目标元素不在数组中");
}
scanner.close();
}
}
阅读全文