给定一个数组(已经排序好的数组,如果没有排序好,先排序,直接用sort函数),往其中插入一个数字:
import java.util.Scanner;
public class InsertNum {
public static void main(String[] args) {
//给67,87,88,98,99数组中 插入一个元素90 ,要求保持从小到大的顺序。 (不能用排序算法)
int[] nums = new int[]{67,87,88,98,99};
System.out.println("未插入之前的数组:");
for(int i = 0; i < nums.length;i++){
System.out.print(nums[i] + "\t");
}
System.out.println();
//创建新数组,能够容纳新插入后的 全部元素
int[] newNums = new int[nums.length+1];
for(int i = 0; i < nums.length;i++){
newNums[i] = nums[i];
}
//输入要插入的值
Scanner input = new Scanner(System.in);
System.out.println("请输入要插入的值:");
int insert = input.nextInt();
// int insert = 90;
//寻找要插入的位置,
// 默认插入的位置 就是 最大值的位置,否则会出现数组越界的问题
int position = newNums.length - 1;
for(int i = 0;i < newNums.length;i++){
if(newNums[i] > insert){
position = i;
break;
}
}
System.out.println("要插入的位置:" + position);
//从后往前平移数组元素,给新的插入的数字挪位置
for(int i = newNums.length - 2; i >= position; i--){
newNums[i+1] = newNums[i];
}
//插入元素
newNums[position] = insert;
System.out.println("新数组:");
for(int i = 0; i < newNums.length;i++){
System.out.print(newNums[i] + "\t");
}
}
}