有一组学生的成绩是{99,85,82,63, 60},将它们按降序排列,保存在一个数组中。现需要增加一个学生的成绩,将它插入数组,并保持成绩降序排列,用Java,不用ArrayList
时间: 2024-10-08 17:21:17 浏览: 15
首先,在Java中,我们可以使用`java.util.Arrays`类的`sort`方法对整数数组进行排序。由于题目要求保持数组的原始类型不变,我们不能直接使用ArrayList,因为ArrayList可以动态扩容。因此,我们可以创建一个新的数组,按照降序遍历原数组,然后添加新分数。
以下是步骤:
1. 定义一个新数组,大小比原数组大1,用于存放排序后的成绩。
2. 使用`Arrays.sort`方法,传入原数组和一个自定义比较器,确保降序排列。
3. 遍历排序后的数组,如果遇到第一个小于新分数的元素,找到其索引,插入新分数。
4. 如果所有元素都大于新分数,那么新数组的最后一个位置就是插入位置。
```java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] scores = {99, 85, 82, 63, 60};
int newScore = 97; // 新增的成绩
// 创建一个新数组,长度加一
int[] sortedScores = Arrays.copyOf(scores, scores.length + 1);
// 对原数组降序排序
Arrays.sort(sortedScores, (a, b) -> b - a);
// 插入新分数到适当的位置
for (int i = 0; i < sortedScores.length; i++) {
if (sortedScores[i] < newScore) {
System.arraycopy(sortedScores, i, sortedScores, i + 1, sortedScores.length - i);
sortedScores[i] = newScore;
break;
}
}
// 输出降序排列后的数组
for (int score : sortedScores) {
System.out.print(score + " ");
}
}
}
```