题解
【入门】优秀成绩的平均分
1 条题解
-
0
解题思路
题目要求算出全班前 5 名的平均分。
思路分两步:
- 先排序:把成绩从高到低排好(冒泡排序)
- 取前 5 个:排序后前 5 个就是前 5 名,加起来除以 5 就是平均分
冒泡排序的原理:相邻两个数比较,如果前面的比后面的小就交换,这样一轮下来最大的数就冒到最后面。重复 n-1 轮,就全部排好序了。
保留一位小数:用 printf 的 %.1f 格式,或者直接 sum/5.0 输出。
参考代码
#include <iostream> #include <cstdio> using namespace std; int main() { int n, a[100]; cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; // 冒泡排序,从大到小 for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (a[j] < a[j + 1]) { int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } // 前5名平均分 int sum = 0; for (int i = 0; i < 5; i++) sum += a[i]; printf("%.1f\n", sum / 5.0); return 0; }复杂度分析
- 时间复杂度:O(N²),冒泡排序
- 空间复杂度:O(N),一个数组存成绩
- 1