当前位置: 首页 > news >正文

week1-[分支结构]中位数

week1-[分支结构]中位数

题目描述

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

输入格式

输入共 111444 个正整数 a,b,c,da,b,c,da,b,c,d

输出格式

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

样例 #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 1001a,b,c,d100

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 1001a,b,c,d100),可以直接用排序解决。

3. 解决方案

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

4. 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_elementO(N)O(N)O(N) 时间求出中位数,无需完全排序。
http://www.dtcms.com/a/330664.html

相关文章:

  • AI技术产品化:核心认知与实战指南
  • 【深度学习计算性能】04:硬件
  • 集成电路学习:什么是Machine Learning机器学习
  • 云原生存储架构设计与性能优化
  • 自动驾驶轨迹规划算法——Apollo OpenSpace Planner
  • 利用GISBox完成超图S3M与OSGB三维模型格式的转换
  • Elasticsearch 中如何配置 RBAC 权限-实现安全的访问控制
  • 现在都是APP,小程序抢购,支持浏览器不支持 SSE
  • GPT-5 提示词优化全攻略:用 Prompt Optimizer 快速迁移与提升,打造更稳更快的智能应用
  • LeetCode——Hot 100【合并区间 最大子数组和】
  • 算法148. 排序链表
  • 希尔排序专栏
  • docker compose部署mysql
  • UniVoc:基于二维矩阵映射的多语言词汇表系统
  • ESP32单片机与STM32单片机协同完成工业控制智能化改造
  • Uniapp 条件编译详解
  • 用Python从零开始实现机器学习Baseline
  • 文件服务器:FTP
  • Inconsistent vendoring detected. Please re-run “go mod vendor“.
  • QML开发:画布元素
  • 数学建模-非线性规划模型
  • Spring AI PagePdfDocumentReader 全解析:基于 Apache PdfBox 的按页 PDF 读取实战
  • PDF压缩原理详解:如何在不失真的前提下减小文件体积?
  • 高分辨率PDF压缩技巧:保留可读性的最小体积方案
  • PDF 段落提取利器:Spring AI 的 ParagraphPdfDocumentReader 实战
  • 【办公自动化】如何使用Python操作PPT和自动化生成PPT?
  • pdf文件流或者本地文件读取
  • OSI七层模型和TCP/IP协议簇
  • elasticsearch冷热数据读写分离!
  • Qt TCP 客户端对象生命周期与连接断开问题解析