发布时间:2026/7/23 23:53:09
PTA基础编程题目集 6-11 求自定类型元素序列的中位数(C语言实现) 题目描述摘要本文介绍如何实现求自定义类型元素序列的中位数核心思路是先降序排序希尔排序再取下标 (N-1)/2 的元素时间复杂度约 O(N^1.3)空间 O(1)。文末附完整代码及测试用例。本题要求实现一个函数求 N 个集合元素 A[] 的中位数即序列中第 ⌊(N1)/2⌋ 大的元素。其中集合元素的类型为自定义的 ElementType。函数接口定义ElementType Median( ElementType A[], int N );其中给定集合元素存放在数组 A[] 中正整数 N 是数组元素个数。该函数须返回 N 个 A[] 元素的中位数其值也必须是 ElementType 类型。裁判测试程序样例#include stdio.h #define MAXN 10 typedef float ElementType; ElementType Median( ElementType A[], int N ); int main () { ElementType A[MAXN]; int N, i; scanf(%d, N); for ( i0; iN; i ) scanf(%f, A[i]); printf(%.2f\n, Median(A, N)); return 0; } /* 你的代码将被嵌在这里 */输入样例3 12.3 34 -5输出样例12.30函数部分实现/* 快速选择后返回中位数 */ElementTypeMedian(ElementType A[],intN){inti,j,gap;ElementType temp;/* 希尔排序降序时间复杂度约 O(N^1.3)可通过大 N 时限 */for(gapN/2;gap0;gap/2){/* 增量序列每次折半 */for(igap;iN;i){/* 从 gap 开始向后扫描 */tempA[i];/* 暂存当前元素 *//* 降序插入若前一个增量位置的元素更小则后移 */for(ji;jgapA[j-gap]temp;j-gap)A[j]A[j-gap];A[j]temp;/* 放入正确位置 */}}/* 降序排列后A[(N-1)/2] 恰好是第 ⌊(N1)/2⌋ 大的元素 */returnA[(N-1)/2];}下面是 Median 函数的算法流程图是是是否否否开始 Median(A, N)gap N / 2gap 0 ?i gapi N ?temp A[i]; j ij gap 且 A[j-gap] temp ?A[j] A[j-gap]; j - gapA[j] temp; igap / 2返回 A[(N-1)/2]结束代码部分实现/* 6-11 求自定类型元素序列的中位数 * 题目实现函数 Median(A[], N)返回 N 个元素的中位数。 * 实现原理先排序再取中间元素。 * 这里用希尔排序把数组降序排列 * 排序后中位数位于下标 (N-1)/2向下取整 * 对奇数/偶数长度都适用偶数时取中间偏左者。 * 时间复杂度 O(N^1.3)希尔空间复杂度 O(1)。 */#includestdio.h#defineMAXN10typedeffloatElementType;ElementTypeMedian(ElementType A[],intN);intmain(){ElementType A[MAXN];intN,i;scanf(%d,N);for(i0;iN;i)scanf(%f,A[i]);printf(%.2f\n,Median(A,N));return0;}/* 希尔排序降序后返回中位数 */ElementTypeMedian(ElementType A[],intN){inti,j,gap;ElementType temp;/* 希尔排序降序时间复杂度约 O(N^1.3)可通大 N 时限 */for(gapN/2;gap0;gap/2){/* 增量序列每次折半 */for(igap;iN;i){/* 从 gap 开始向后扫描 */tempA[i];/* 暂存当前元素 *//* 降序插入若前一个增量位置的元素更小则后移 */for(ji;jgapA[j-gap]temp;j-gap)A[j]A[j-gap];A[j]temp;/* 放入正确位置 */}}/* 降序排列后A[(N-1)/2] 恰好是第 ⌊(N1)/2⌋ 大的元素 */returnA[(N-1)/2];}

相关新闻

2026/7/23 23:48:09

ISP ToneMap:原理、必要性与应用场景

摘要 ISP ToneMap(色调映射)是图像信号处理器(ISP)中的核心算法,负责将传感器捕获的高动态范围(HDR)数据智能压缩并映射到标准动态范围(SDR)显示设备上。它解决了现实世界广阔亮度范围与显示设备有限能力之间的根本矛盾,通过全局或局部映射算法,在保留高光和阴影细…

2026/7/23 23:48:09

K8s 到底解决了什么现实问题?

K8s 通俗完整讲解(结合你做AI服务、模型部署的场景来讲,避开晦涩教科书话术) 1、名字由来 Kubernetes 单词拼写:K-ubernete-s,首尾K、s,中间8个字母,行业简称 K8s,中文常叫「库伯内特斯」。 是谷歌基于自家十几年容器调度系统 Borg 开源出来的云原生编排工具,现在云…

2026/7/24 1:13:15

AI在金融反洗钱中的实战应用与模型优化

1. 项目概述:当AI遇上反洗钱金融风控领域有个永恒难题:洗钱行为就像变色龙,总能随着监管规则的变化快速调整形态。传统规则引擎刚更新完检测逻辑,新型交易模式就又出现了。我在某金融机构数据部门工作时,最头疼的就是每…

2026/7/24 1:13:15

Baklib AI知识中台:企业内容管理与智能应用解决方案

1. 项目概述:Baklib AI知识中台的定位与价值在数字化转型浪潮中,企业内容管理正面临三大核心痛点:分散在各处的文档、图片、音视频等非结构化数据难以统一管理;多站点、多语言、多版本的内容导致品牌体验割裂;传统知识…

2026/7/24 1:13:15

纵向调研样本流失率太高?2026 四类平台长期留存方案实测对比

【导语】品牌追踪、用户研究等长期项目中,样本流失是绕不开的痛点,流失严重还会带来偏差风险。本文结合实操经验,对比问卷星样本服务、Cint、SurveyMonkey、Qualtrics四大平台的纵向调研留存能力,供研究团队选型参考。一、为什么纵…

2026/7/24 1:13:15

基于YOLOv12的道路坑洼检测系统开发与实践

1. 项目概述与核心价值道路坑洼检测一直是城市基础设施维护的重要课题。传统人工巡检方式效率低下且成本高昂,而基于计算机视觉的自动化检测系统能显著提升道路养护效率。这个项目采用YOLOv12这一前沿目标检测算法,构建了一套完整的道路坑洼识别系统&…

2026/7/24 1:08:14

集合详解(五):集合嵌套与Collections工具类

一、集合嵌套1、HashMap嵌套HashMap<span style"font-size:18px;"> /** HashMap嵌套HashMap* * * * 先存储元素&#xff0c;然后遍历元素*/public void test3(){// 创建集合对象HashMap<String, HashMap<String, Integer>> czbkMap new HashMap&l…

2026/7/23 12:54:51

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述&#xff1a;为什么我们需要一个本地通信服务器&#xff1f;在游戏开发、数字孪生、仿真训练等众多领域&#xff0c;Unity作为强大的实时3D内容创作平台&#xff0c;其核心逻辑通常由C#驱动。然而&#xff0c;当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/24 0:03:10

不同品牌斜齿行星减速机如何替换?以PX与PAG系列为例

不同品牌斜齿行星减速机如何替换&#xff1f;以 PX 与 PAG 系列为例 一、系列对应不等于型号直接互换 PX 与 PAG 都属于斜齿、方法兰、输出轴式精密行星减速机&#xff0c;结构形式和应用方向具有对应关系。 原设备使用PX系列时&#xff0c;可以优先从PAG系列中寻找替换型号。但…

2026/7/24 0:03:10

jdk8 把list 扁平化成String 多个以逗号分隔

在 JDK 8 中&#xff0c;将 List 扁平化为以逗号分隔的 String&#xff0c;有几种非常简洁且高效的方法。&#x1f680; 推荐方案&#xff1a;使用 Collectors.joining()这是最标准的 Java 8 写法&#xff0c;适用于 List<String>。javaimport java.util.stream.Collecto…

2026/7/24 0:03:10

java 两个 long id 怎么合并成一个long id 并且不重复

“把两个 Long ID 合并成一个唯一的 Long ID&#xff0c;且保证不重复”这个需求&#xff0c;在 Java 里直接做数学上的“完美合并”是不可能的。因为两个 Long&#xff08;各 64 位&#xff09;要合并成一个 Long&#xff08;64 位&#xff09;&#xff0c;在信息论上是有损压…

2026/7/23 23:42:43

3个高效策略:快速掌握Axure中文界面配置

3个高效策略&#xff1a;快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…