**问题:Java中如何向一个已经升序排序好的数组中插入元素,得到的数组依然是升序数组
效果:
int[] array = {1,3,7,12,24,36,48};
插入数字9后新数组为
int[] newArray = {1,3,7,9,12,24,36,48};
**
import java.util.*;
public class ArrayInsertDemo{
public static void main(String[] args){
//定义一个整形数组
int[] arr = {1,3,7,12,24,36,48};
//定义一个新数组用来存储插入后得到的新数组的元素,使其长度加1
int newArr = new int[arr.length+1];
//将arr中的元素全部赋给newArr
for(int index = 0;index < arr.length;index ++){
newArr[index] = arr[index];
}
//键盘录入要插入的数字
Scanner sc = new Scanner(System.in);
//接收键盘录入的数字
int num = sc.nextInt();
//得到插入的数字应该在新数组中的索引位置
//定义插入元素的索引位置
int insertIndex = 0;
for(int index = 0;index < newArray.length;index++){
//如果插入的数字大于newArr[index],则insertIdex = index;
if(num > newArr[index]){
insertIndex = index;
}
}
//将newArr中的元素从要插入的索引位置开始向后移动一位
**判断条件index>insertIndex或者index>=insertIndex都可以**
for(int index = newArr.length-1;index > insertIndex; index--){
newArr[index] = newArr[index-1];
}
//将要插入的数存到集合中
newArr[insertIndex] = num;
//打印数组
System.out.println(Arrays.toString(newArr));
}
}