top1编程
← 返回题目
题解

【入门】求N个整数的平均数、众数和中位数

1 条题解

  • 0
    @ 2026-7-30 1:34:19

    解题思路

    排序后计算平均数和中位数,再逐个数统计出现次数得到众数。

    参考代码

    // 先读入题目给出的数据。
    // 再按照题目要求进行计算。
    // 最后按规定格式输出答案。
    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main() {
        int n, a[10000], sum = 0, mode, mc = 0; cin >> n;
        // 读入数据并计算总和。
        for (int i = 0; i < n; i++) { cin >> a[i]; sum += a[i]; }
        // 排序后可以直接找到中位数。
        for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) if (a[i] > a[j]) { int t = a[i]; a[i] = a[j]; a[j] = t; }
        for (int i = 0; i < n; i++) { int c = 0; for (int j = 0; j < n; j++) if (a[j] == a[i]) c++; if (c > mc) { mc = c; mode = a[i]; } }
        double mid = n % 2 ? a[n / 2] : (a[n / 2 - 1] + a[n / 2]) / 2.0;
        cout << fixed << setprecision(2) << (double)sum / n << ' ' << mode << ' ' << setprecision(1) << mid << endl;
        return 0;
    }
    

    复杂度分析

    排序需要 O(n^2) 时间;其余循环按照实际遍历次数计算。代码使用固定大小数组,额外空间复杂度为 O(1) 或 O(n)。

    • 1