数组练习题
已知有一个升序的数组,要求插入有个元素,该数组顺序依然是升序,比如:[10,12,45,90],添加23后,数组为[10,12,23,45,90]
//index是数字插入的位置,遍历时,index = i
//遍历数组,如果发现insertNum <= arr[i],说明i就是要插入的位置
//如果遍历完后,没有发现insertNum <= arr[i],说明index = arr.length,即将插入的数字排到最后
Scanner sc = new Scanner(System.in);
int[] arr = {10,12,45,90};
int[] arrNew =new int[arr.length + 1];
System.out.println("请输入您要插入的数字");
int num = sc.nextInt();
int index = -1 ;
for(int i = 0 ; i < arr.length ; i++){
if (num <= arr[i]){//如果插入的数字,小于下标为i的数字,那么此处就是num要插入的位置
index = i;//记录要插入的位置
break;
}
}
for(int i = 0 , j = 0 ; i < arrNew.length ; i++){
if (i != index) { //如果每走到要插入的位置,那么将旧数组的内容插入新数组,同时j代表旧数组的遍历,j往前走一位,这种情况也包括插入发生在最后一位,前面的全部拷贝就数组的内容。
arrNew[i] = arr[j];
j++;
}else{
arrNew[i] = num;
}
}
arr = arrNew; //重定向将新数组指向原来的数组;
System.out.println("========插入后的新数组========");
//遍历数组
for (int i = 0 ; i < arr.length ; i++){
System.out.print(arr[i]+" ");
}