在一维数组中插入数据:
有一组学员的成绩{99,85,82,63, 60},已经是按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序
难度指数:★★★★
方法:
将当前数组中的数据元素存储到比当前数组大1的数组中。
解题思路分析
简化思路:
1.声明一个长度比原来数组长度大1的数组。
2.将原来数组里元素按照顺序存入到新的数组中。
3.使用Scanner类获取你要增加的学员成绩。
4.通过循环比较获取增加的学员成绩的插入位置。
5.从插入元素插入位置开始及之后的元素依次往后移动一位(从最后一个元素开始,倒着移动)。
6.将要插入的成绩存储到插入位置。
详细思路:
1.声明一个scores数组用来存储当前学员的成绩。
2.声明一个比scores数组大1的newScores数组。
3.将scores数组中的数据元素通过赋值,存储到newScores数组当中。
4.使用Scanner类从控制台接收新学员成绩,存储到relt变量当中。
5.声明一个变量index表示newScores数组的最后一个下标的值。
6.将relt变量当中的新学员成绩与newScores数组中学院成绩相比较,第一个比relt成绩小的数组元素下表赋值给index变量。
7.使用for循环将比relt值小的数组元素向后移一位。
8.relt赋值给newScores数组下标为index值的数据元素。
完成数组中插入数据。
代码如下:
public static void main(String[] args) {
//1.声明一个scores数组用来存储当前学员的成绩。
int[] scores = {99,85,82,63,60};
//2.声明一个比scores数组大1的newScores数组。
int[] newScores = new int[scores.length + 1];
//3.将scores数组中的数据元素通过赋值,存储到newScores数组当中。
for(int i = 0 ; i < scores.length ; i++){
newScores[i] = scores[i];
}
System.out.println("---------插入数据前的newScores数组---------");
for (int i = 0; i < newScores.length; i++) {
System.out.print(newScores[i] + " ");
}
System.out.println();
//4.使用Scanner类从控制台接收新学员成绩,存储到relt变量当中。
Scanner in = new Scanner(System.in);
System.out.println("请输入学员成绩:");
int relt = in.nextInt();
//5.声明一个变量index表示newScores数组的最后一个下标的值。
int index = newScores.length - 1;
//6.将relt变量当中的新学员成绩与newScores数组中学院成绩相比较,
// 第一个比relt成绩小的数组元素下表赋值给index变量。
for(int i = 0 ; i < newScores.length ; i++){
if(relt > newScores[i]){
index = i;
break;
}
}
//7.使用for循环将比relt值小的数组元素向后移一位。
for(int i = newScores.length-1 ; i > index ; i--){
newScores[i] = newScores[i-1];
}
//8.relt赋值给newScores数组下标为index值的数据元素。
newScores[index] = relt;
//输出newScores数组中的数据元素。
System.out.println("---------插入数据后的newScores数组---------");
for (int i = 0; i < newScores.length; i++) {
System.out.print(newScores[i] + " ");
}
}