2.编写 Java程序, 设计MyArray2类来实现以下要求: 使用二分法查询数组中的元素是否存在。数组元素个数可以由用户确定, 数组元素值也可由用户输入; 注意: 采用二分法对数组查询的前提条件是要求数组有序
时间: 2024-11-15 13:30:20 浏览: 10
js删除数组中指定元素
在Java中,我们可以创建一个名为`MyArray2`的类,该类用于实现使用二分查找法(Binary Search)来检查给定数组中是否存在特定元素。由于二分查找的前提是数组已排序,我们需要在类内添加一个方法来进行排序,并提供一个搜索方法来执行查找操作。下面是简单的实现:
```java
import java.util.Arrays;
import java.util.Scanner;
public class MyArray2 {
private int[] array;
// 构造方法,接受用户输入的元素和数量
public MyArray2(int[] inputElements) {
this.array = Arrays.copyOf(inputElements, inputElements.length); // 拷贝原数组保持原始顺序
sortArray(); // 对数组进行排序
}
// 二分查找法
public boolean search(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;
}
// 对数组进行排序
private void sortArray() {
Arrays.sort(array);
}
// 主函数,接收用户输入创建数组实例
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数组元素的数量:");
int size = scanner.nextInt();
int[] elements = new int[size];
System.out.println("现在请输入" + size + "个有序元素:");
for (int i = 0; i < size; i++) {
elements[i] = scanner.nextInt();
}
scanner.close();
MyArray2 myArray = new MyArray2(elements);
System.out.println("你想查找的元素是:");
int target = scanner.nextInt();
// 查找目标元素是否存在于数组中
if (myArray.search(target)) {
System.out.println("元素存在于数组中.");
} else {
System.out.println("元素不存在于数组中.");
}
}
}
```
在这个类中,用户首先输入数组的大小和元素,然后创建`MyArray2`实例并对其进行排序。接下来,用户输入要查找的目标元素,调用`search`方法判断元素是否存在于排序后的数组中。
阅读全文