package cn.zhang;
import java.util.Arrays;
import java.util.Scanner;
public class Subject001 {
/*
* 有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
*
* <提示>程序分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。
*/
public static void main(String[] args) {
// 已经按升序排好序的数组
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();
}
}
结果: