week1-[分支结构]中位数

week1-[分支结构]中位数

题目描述

给定 444 个正整数 a,b,c,da,b,c,da,b,c,d,输出它们的中位数,答案四舍五入保留 111 位小数。

输入格式

输入共 111 行 444 个正整数 a,b,c,da,b,c,da,b,c,d。

输出格式

输出共 111 行 111 个浮点数表示答案。

样例 #1

样例输入 #1

复制代码
3 1 2 7

样例输出 #1

复制代码
2.5

提示

样例解释 111

(2+3)÷2=2.5(2 + 3) \div 2 = 2.5(2+3)÷2=2.5。

数据范围

对于所有数据,1≤a,b,c,d≤1001\leq a,b,c,d\leq 1001≤a,b,c,d≤100。

week1-[分支结构]中位数 题解

1. 阅读题目

我们有 444 个正整数 a,b,c,da,b,c,da,b,c,d,要求输出它们的中位数 ,并且结果四舍五入保留 111 位小数。

  • 中位数定义:
    • 当数据个数为偶数时,中位数 = 中间两个数的平均值。
    • 本题有 444 个数,所以中位数 = 排序后第 2 和第 3 个数的平均值。

2. 分析问题

  • 步骤
    1. 将 444 个数存入数组。
    2. 排序。
    3. 取第 2 和第 3 个数的平均值(注意下标)。
    4. 输出保留 1 位小数(四舍五入)。
  • 数据范围很小(1≤a,b,c,d≤1001 \leq a,b,c,d \leq 1001≤a,b,c,d≤100),可以直接用排序解决。

3. 解决方案

  • sort 排序数组。
  • 平均值用 double 计算,避免整数除法丢失小数。
  • fixedsetprecision(1) 控制保留 1 位小数。

4. C++ 代码实现

c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    vector<int> nums(4);
    for (int i = 0; i < 4; i++) cin >> nums[i];

    sort(nums.begin(), nums.end());
    double median = (nums[1] + nums[2]) / 2.0;

    cout << fixed << setprecision(1) << median << "\n";
    return 0;
}

5. 数据测试

样例 1

输入

复制代码
3 1 2 7

过程

  • 排序后:1 2 3 7
  • 中位数 = (2+3)/2=2.5(2 + 3) / 2 = 2.5(2+3)/2=2.5

输出

复制代码
2.5

样例 2

输入

复制代码
10 20 30 40

过程

  • 排序后:10 20 30 40
  • 中位数 = (20+30)/2=25.0(20 + 30) / 2 = 25.0(20+30)/2=25.0

输出

复制代码
25.0

6. 时间复杂度与空间复杂度

  • 时间复杂度 :O(4log⁡4)≈O(1)O(4\log 4) \approx O(1)O(4log4)≈O(1)
  • 空间复杂度 :O(4)≈O(1)O(4) \approx O(1)O(4)≈O(1)

7. 优化方案

  • 数据量极小,本题已是最优解。
  • 如果扩展到 NNN 个数且只求中位数,可以用 nth_element 在 O(N)O(N)O(N) 时间求出中位数,无需完全排序。
相关推荐
乌萨奇也要立志学C++17 小时前
【洛谷】队列相关经典算法题详解:模板队列、机器翻译、海港
算法
狂奔的sherry17 小时前
单例模式(巨通俗易懂)普通单例,懒汉单例的实现和区别,依赖注入......
开发语言·c++·单例模式
YuTaoShao17 小时前
【LeetCode 热题 100】49. 字母异位词分组
算法·leetcode·哈希算法
EnigmaCoder18 小时前
【C++】引用的本质与高效应用
开发语言·c++
郭涤生18 小时前
arma::imat22
c++
aliedudu19 小时前
决策树概念与原理
算法·决策树·机器学习
歪歪10019 小时前
Qt Creator 打包应用程序时经常会遇到各种问题
开发语言·c++·qt·架构·编辑器
程序员Xu20 小时前
【LeetCode热题100道笔记】腐烂的橘子
笔记·算法·leetcode
天选之女wow20 小时前
【代码随想录算法训练营——Day4】链表——24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表II
数据结构·算法·leetcode·链表
熊猫钓鱼>_>20 小时前
2025反爬虫之战札记:从robots.txt到多层防御的攻防进化史
开发语言·c++·爬虫