有一组学生的成绩是{99,85,82,63, 60},将它们按降序排列,保存在一个数组中。现需要增加一个学生的成绩,将它插入数组,并保持成绩降序排列,用java写
时间: 2024-10-08 14:23:18 浏览: 16
PHP程序设计-3期(KC016) 2.7.4 数组操作(排序)常见问题.docx
在 Java 中,你可以使用 ArrayList 或者 Comparable 接口配合 Arrays 类来完成这个任务。这里我们先创建一个 Integer 数组并排序,然后添加新成绩并保持顺序。以下是代码示例:
```java
import java.util.Arrays;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// 学生成绩原始数组
int[] scores = {99, 85, 82, 63, 60};
// 转换为 ArrayList 方便插入操作
ArrayList<Integer> scoreList = new ArrayList<>(Arrays.asList(scores));
// 新增的成绩
int newScore = 78; // 可以替换为你想要插入的具体分数
// 插入新成绩并保持降序排列
scoreList.add(findInsertIndex(scoreList, newScore), newScore);
// 将 ArrayList 回填到原数组
scores = scoreList.stream().mapToInt(Integer::intValue).toArray();
// 打印排序后的数组
System.out.println("排序后的成绩数组:");
for (int score : scores) {
System.out.print(score + " ");
}
// 查找插入位置的辅助函数
private int findInsertIndex(ArrayList<Integer> list, int value) {
int low = 0, high = list.size() - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (list.get(mid) < value) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return low;
}
}
}
```
运行此代码,你会看到插入新成绩后的降序排列结果。
阅读全文