解题思路
1)新建一个长度比原来数组大1的数组
2)将原来数组中的元素存储到这个新的数组中
3)获取你要插入的数据
4)获取插入元素要插入的位置(下标),通过循环比较插入的数据与数组中元素得到
5)从插入位置开始及之后的元素依次往后移动一个位置,空出插入位置,存储插入的元素,移动需要从最后一个位置开始操作
6)将插入的元素存储到插入位置
代码
// 已经按升序排好序的数组
int[] nums = new int[] { 11, 22, 33, 44, 55 };
// 新建一个比已经排好序的数组长度长1的数组
int[] newNums = Arrays.copyOf(nums, nums.length + 1);
System.out.println("数组插入元素前:");
for (int i = 0; i < newNums.length; i++) {
System.out.print(newNums[i] + " ");
}
Scanner sc = new Scanner(System.in);
System.out.println("\n请输入你要插入的元素值(整数):");
int insert = sc.nextInt();
//定义插入元素的下标
int index = newNums.length - 1;
for (int i = 0; i < newNums.length; i++) {
if (insert < newNums[i]) {
index = i;//获取插入元素的下标
break;
}
}
//移动元素
for (int i = newNums.length - 1; i > index; i--) {
newNums[i] = newNums[i - 1];
}
//将插入的元素存到插入位置上
newNums[index] = insert;
System.out.println("数组插入元素后:");
for (int i = 0; i < newNums.length; i++) {
System.out.print(newNums[i] + " ");
}
sc.close();
运行结果