Java 代码实现有序数组插入元素并保持排序
Java 代码实现有序数组插入元素并保持排序
本示例展示如何使用 Java 代码将一个新整数插入到已排序的整数数组中,并保持数组的排序顺序。
问题描述:
假设有一个包含 n (n <= 100) 个整数的数组,这些整数已经按照从小到大顺序排列。现在需要将一个新整数 x 插入到这个数组中,并使新的排序仍然有序。输入数据包含多个测试实例,每组数据由两行组成:
- 第一行是 n 和 m,分别表示数组长度和要插入的整数。
- 第二行是已经有序的 n 个整数的数列。
当 n 和 m 同时为 0 时,表示输入数据的结束。
对于每个测试实例,需要输出插入新数后的有序数列。
示例输入:
3 3
1 2 4
0 0
示例输出:
1 2 3 4
代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
int m = scanner.nextInt();
if (n == 0 && m == 0) {
break;
}
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = scanner.nextInt();
}
int[] newNums = new int[n + 1];
int index = 0;
for (int i = 0; i < n; i++) {
if (nums[i] < m) {
newNums[index++] = nums[i];
} else {
newNums[index++] = m;
for (int j = i; j < n; j++) {
newNums[index++] = nums[j];
}
break;
}
}
if (index == n) {
newNums[index] = m;
}
for (int i = 0; i < n + 1; i++) {
System.out.print(newNums[i] + " ");
}
System.out.println();
}
}
}
代码解析:
- 使用
Scanner类读取输入数据,包括数组长度、要插入的整数以及已排序的数组。 - 创建一个新的数组
newNums,长度为原始数组长度加 1,用于存储插入新整数后的结果。 - 遍历原始数组,找到合适的位置插入新整数。如果当前元素小于要插入的整数,则将当前元素添加到
newNums数组中;否则,将要插入的整数添加到newNums数组中,并将当前元素以及之后的元素添加到newNums数组中。 - 如果遍历完原始数组后,还没有找到合适的插入位置,则将要插入的整数添加到
newNums数组的末尾。 - 输出
newNums数组,即插入新整数后的有序数组。
总结:
该代码使用简单的循环迭代和判断逻辑,实现了将一个新整数插入到已排序的数组中并保持排序的功能。代码简洁易懂,适合初学者学习。
原文地址: http://www.cveoy.top/t/topic/mJIs 著作权归作者所有。请勿转载和采集!