一共5个步骤,完成有序插入:
(1)用Arrays.copyOf新建长度+1的数组,作为即将插入元素的数组
(2)获取新元素值
(3)通过比较元素值大小,查找新元素将要插入的下标index
(4)下标为chars1.length-2~index的元素依次右移
(5)将新元素插入到index下标
Scanner input = new Scanner(System.in);
char[] chars = {'a','c','g','n','x'};//原数组
char[] chars1 = Arrays.copyOf(chars, chars.length+1);//新数组(长度+1)
/*
* Scanner对象只能用.next()从控制台获取一个String,没有.nextChar()方法
* 故用以下两种办法,获取字符串的第一个字符:
* 字符串.toCharArray()[0]
* 字符串.charAt(0)
*/
System.out.print("请输入一个字符");
//char newChar = input.nextLine().toCharArray()[0];
char newChar = input.nextLine().charAt(0);
/*
* 通过比较大小,查找字符将要插入的下标index
*/
int index = chars1.length-1;
for(int i=0;i<chars1.length-1;i++){
if(newChar < chars1[i]){
index = i;
break;
}
}
//按chars1.length-2~index的顺序,依次将元素右移
for(int i=chars1.length-2;i>=index;i--){
chars1[i+1] = chars1[i];
}
//移动后空出目标位置index,将新元素插入
chars1[index] = newChar;
System.out.println("原数组:"+Arrays.toString(chars));
System.out.println("新插入的字符:"+newChar);
System.out.println("插入下标:"+index);
System.out.println("插入后的数组:"+Arrays.toString(chars1));
}