最近学到了这个数组相关内容,看到了这个题 不会做由此来记录一下这个题
已知有一个升序的数组,要求插入一个元素,该数组顺序依然是升序,
比如【10,12,45,90】添加23后数组为 【10,12,23,45,90】
import java.util.Scanner;
public class ArrayEx01 {
public static void main(String []args) {
/*
已知有一个升序的数组,要求插入一个元素,该数组顺序依然是升序,
比如【10,12,45,90】添加23后数组为 【10,12,23,45,90】
本质是数组的扩容加定位
1.先确定添加的数添加到哪个索引
2.然后扩容
*/ int temp = 0;
int index = -1;//要插入的位置
int []arr = {10,12,45,90};
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个数字");
//找到大于num中最小的数的位置
int num = myScanner.nextInt();
for(int i = 0 ;i < arr.length ;i++){
if (num <= arr[i]){
index = i;
break;
}
}
// 判断index 的值来判断是否进入了if
if(index == -1){
index = arr.length;
}
System.out.println(index);
//扩容
int[] arrNew = new int [arr.length + 1];
//下面将arr元素拷贝到arrNew,并且跳过index
for(int i = 0,j = 0 ;i < arrNew.length;i++){
if(i != index){// 可以把arr元素拷贝到arrNew
arrNew[i] = arr[j];
// 这里真是绝了 将arr 与arrNew的遍历分开就不需要考虑太多
// arr依旧会按照顺序输出 只需要arrNew改变就好了 在index选择num
j++;
}else{
arrNew[i] = num;
}
}
//输出数组
for(int i = 0 ;i < arrNew.length;i++){
System.out.print(arrNew[i]+"\t");
}
}
}