java编写程序,完成下列功能: (1)输入20个整数到数组中; (2)对20个数按从大到小的顺序排序,输出排序后的数组; (3)输入一个整数x; (4)在数组中,用二分法查找x。如果找到了输出x在数组中的下标,找不到输出-1。
时间: 2024-03-16 09:44:45 浏览: 94
好的,以下是 Java 代码实现:
```java
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int binarySearch(int[] arr, int x) {
int left = 0, right = arr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] > x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[20];
System.out.println("请输入20个整数:");
for (int i = 0; i < 20; i++) {
arr[i] = scanner.nextInt();
}
Arrays.sort(arr);
System.out.println("排序后的数组为:");
for (int i = arr.length - 1; i >= 0; i--) {
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("请输入一个整数x:");
int x = scanner.nextInt();
int index = binarySearch(arr, x);
if (index == -1) {
System.out.println("数组中未找到x!");
} else {
System.out.println("x在数组中的下标为:" + index);
}
}
}
```
程序首先输入20个整数到数组中,然后使用 `Arrays.sort` 函数对数组进行从小到大的排序,输出排序后的数组。接着,程序输入一个整数 x,调用 `binarySearch` 函数进行二分查找,找到了输出 x 在数组中的下标,找不到输出 -1。
注意,Java 中的二分查找需要按照从小到大的顺序进行,因此在实现二分查找时,要根据题目要求将数组从小到大排序,然后再调用 `binarySearch` 函数进行查找。
阅读全文