Java中第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。对每一组输入,在一行中输出插入X后的递增的顺序表在这里给出一组输入。例如: 5 1 3 5 7 9 6
时间: 2024-09-19 07:08:00 浏览: 65
在Java中,你可以通过Scanner类来获取用户输入,并结合数组或ArrayList这样的动态数组结构来实现这个功能。这里是一个简单的示例程序,它会读取列表长度、有序序列以及要插入的元素,然后插入并打印新的有序序列:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class InsertionSort {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 第1行:输入顺序表长度
System.out.println("请输入顺序表的长度:");
int length = scanner.nextInt();
ArrayList<Integer> list = new ArrayList<>(length); // 初始化列表
// 第2行:输入递增有序的顺序表
System.out.println("请输入递增有序的顺序表元素(空格分隔):");
for (int i = 0; i < length; i++) {
list.add(scanner.nextInt());
}
// 第3行:输入要插入的数据元素X
System.out.println("请输入要插入的数据元素X:");
int x = scanner.nextInt();
// 插入数据元素并保持有序
insertAndPrint(list, x);
// 输出结果
System.out.println("插入X后的递增顺序表为: " + list.toString());
}
public static void insertAndPrint(ArrayList<Integer> list, int x) {
int index = binarySearch(list, x); // 查找插入位置
list.add(index, x); // 插入
}
// 二分查找算法找到插入位置
private static int binarySearch(ArrayList<Integer> list, int target) {
int left = 0;
int right = list.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (list.get(mid) < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return left;
}
}
阅读全文