用java编写以下程序:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
时间: 2023-12-01 09:25:52 浏览: 191
将两个有序数组,合并成另一个有序的数组,升序
可以参考以下代码实现:
```java
import java.util.Arrays;
import java.util.Scanner;
public class InsertNumber {
public static void main(String[] args) {
// 初始化已排序的数组
int[] arr = {1, 3, 4, 6, 8, 9};
System.out.println("当前已排序的数组为:" + Arrays.toString(arr));
Scanner scanner = new Scanner(System.in);
System.out.print("请输入需要插入的数:");
int num = scanner.nextInt();
// 找到插入位置
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (num > arr[i]) {
index = i + 1;
} else {
break;
}
}
// 插入数值
int[] newArr = new int[arr.length + 1];
System.arraycopy(arr, 0, newArr, 0, index);
newArr[index] = num;
System.arraycopy(arr, index, newArr, index + 1, arr.length - index);
System.out.println("插入后的数组为:" + Arrays.toString(newArr));
}
}
```
程序逻辑如下:
1. 初始化已排序的数组 `arr`。
2. 通过 `Scanner` 获取需要插入的数 `num`。
3. 找到插入位置,即在 `arr` 数组中找到第一个大于等于 `num` 的位置。
4. 创建一个新数组 `newArr`,将 `arr` 中插入位置前的数拷贝到 `newArr` 中。
5. 将 `num` 插入到 `newArr` 数组中,插入位置为 `index`。
6. 将 `arr` 中插入位置后的数拷贝到 `newArr` 中。
7. 输出插入后的数组 `newArr`。
注意,这里只是演示实现的逻辑,实际应用中需要判断输入的数是否已经存在于数组中,以及排除一些非法输入等情况。
阅读全文