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) 时间求出中位数,无需完全排序。
相关推荐
JianminZheng9 小时前
MTPA算法原理及仿真验证
算法
im_AMBER9 小时前
Leetcode 38
笔记·学习·算法·leetcode
Miraitowa_cheems10 小时前
LeetCode算法日记 - Day 82: 环形子数组的最大和
java·数据结构·算法·leetcode·决策树·线性回归·深度优先
Code_Shark10 小时前
AtCoder Beginner Contest 426 题解
数据结构·c++·算法·数学建模·青少年编程
仰泳的熊猫10 小时前
LeetCode:698. 划分为k个相等的子集
数据结构·c++·算法·leetcode
豐儀麟阁贵10 小时前
4.5数组排序算法
java·开发语言·数据结构·算法·排序算法
xlq2232210 小时前
7(内存管理)(上)(了解)
c++
Shinom1ya_11 小时前
算法 day 32
算法
WBluuue12 小时前
数据结构与算法:摩尔投票算法
c++·算法·leetcode
柯一梦12 小时前
深入解析C++ String类的实现奥秘
c++