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) 时间求出中位数,无需完全排序。
相关推荐
白水先森21 小时前
C语言作用域与数组详解
java·数据结构·算法
想唱rap21 小时前
直接选择排序、堆排序、冒泡排序
c语言·数据结构·笔记·算法·新浪微博
老葱头蒸鸡1 天前
(27)APS.NET Core8.0 堆栈原理通俗理解
算法
视睿1 天前
【C++练习】06.输出100以内的所有素数
开发语言·c++·算法·机器人·无人机
保持低旋律节奏1 天前
CPP——OJ试题,string、vector、类(题三)初步应用
c++
君生我老1 天前
C++ string类常用操作
c++
柠檬07111 天前
matlab cell 数据转换及记录
算法
YuTaoShao1 天前
【LeetCode 每日一题】2221. 数组的三角和
数据结构·算法·leetcode
愿天堂没有C++1 天前
C++——基础
c++
zzzsde1 天前
【c++】深入理解string类(3):典型OJ题
开发语言·c++