发布时间:2026/9/6 17:43:05
生成初始归并段算法实现 生成初始归并段算法的目的是减少初始归并段个数降低归并趟数和磁盘读写次数提高外部排序归并效率该生成算法在数据结构:用面向对象的方法和c语言描述 第二版 殷人昆著 10.3.3节有详细描述本文给出的该算法的C代码是:#includeiostream#includevectorusingnamespacestd;templatetypenameTvoidadjust(vectorsize_tloser_tree,vectorTkey,vectorsize_tsegment_index,size_t start,size_t fathest_leaf_num,size_t offset,vectorboolinfinity){size_t curstart1;size_t parent;if(curfathest_leaf_num){parent(curoffset)/2;}else{parent(cur-fathest_leaf_numkey.size()-1)/2;}--cur;while(parent0){boolvictoryfalse;if(loser_tree[parent]!segment_index.size()cur!segment_index.size()){if(segment_index[loser_tree[parent]]segment_index[cur]){victorytrue;}elseif(segment_index[loser_tree[parent]]segment_index[cur]){if(infinity[loser_tree[parent]]false){if(infinity[cur]||key[loser_tree[parent]]key[cur]){victorytrue;}}}}else{if(cur!segment_index.size()){victorytrue;}}if(victory){size_t tempcur;curloser_tree[parent];loser_tree[parent]temp;}parent/2;}loser_tree[0]cur;}templatetypenameTvoidexteranlSort(vectorvectorTmerge_segment,vectorTinput,size_t merge_paths){size_t k1;while(k1merge_paths-1){k1;}size_t offset(k1)-1;size_t farthest_nummerge_paths-k;size_t fathest_leaf_num2*farthest_num;vectorsize_tloser_tree(merge_paths);vectorTkey(merge_paths);vectorsize_tsegment_index(merge_paths);vectorboolinfinity(key.size(),false);for(size_t i0;iloser_tree.size();i){loser_tree[i]segment_index.size();}size_t run0;for(size_t i0;ikey.size();i){if(runinput.size()){infinity[i]true;segment_index[i]2;}else{key[i]input[run];segment_index[i]1;}adjust(loser_tree,key,segment_index,i,fathest_leaf_num,offset,infinity);}T last_key;size_t pre_segement_index0;while(infinity[loser_tree[0]]false){if(segment_index[loser_tree[0]]!pre_segement_index){merge_segment.push_back(vectorT());pre_segement_index;}merge_segment.back().push_back(key[loser_tree[0]]);last_keykey[loser_tree[0]];if(runinput.size()){segment_index[loser_tree[0]]pre_segement_index1;infinity[loser_tree[0]]true;}else{if(input[run]last_key){segment_index[loser_tree[0]]pre_segement_index1;}else{segment_index[loser_tree[0]]pre_segement_index;}key[loser_tree[0]]input[run];}adjust(loser_tree,key,segment_index,loser_tree[0],fathest_leaf_num,offset,infinity);}}intmain(){vectorintinput{17,21,5,44,10,12,56,32,29};vectorvectorintresult;exteranlSort(result,input,3);for(size_t i0;iresult.size();i){cout第i1个归并段endl;for(constautorun:result[i]){coutrun ;}coutendl;}return0;}

相关新闻

2026/9/6 17:43:05

Java期末复习全攻略:从基础语法到多线程的考点拆解

简介:Java语言程序设计期末考试复习资料,面向高校计算机相关专业学生,用于期末备考和知识点巩固。资源将Java基础核心内容与常见考题相结合,涵盖考试题型分布(填空、单选、简答、程序填空、程序设计)、Java…

2026/9/6 17:43:05

RIME优化Transformer-LSTM实现多变量时间序列预测系统

简介:面向具备Python与深度学习基础的技术人员,这份资源以多变量回归预测为核心,完整呈现RIME霜冰优化算法与Transformer-LSTM组合模型的融合项目实例。文档从实际项目出发,覆盖数据预处理、特征工程、模型构建、优化训练、性能评…

2026/9/6 17:43:05

Wekan数据导入指南:3种格式快速迁移你的看板数据

Wekan数据导入指南:3种格式快速迁移你的看板数据 【免费下载链接】wekan The Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source trans…

2026/9/6 18:28:09

数字倍频电路设计实战:PLL、DLL与FPGA实现全解析

简介:一份聚焦数字倍频电路研究的专业技术文档,面向电子、通信及自动化方向的工程师与学习者,系统梳理了锁相环倍频、DDS数字倍频以及VHDL实现倍频器三条技术路线。文档从CD4046集成锁相环的内部结构与工作原理入手,结合CD4518计数…

2026/9/6 18:28:09

一份优秀DRD模板的拆解:数据字典、数据流转与数据质量要求

简介:这是一份可直接套用的软件项目文档模板,专门用于撰写“数据需求说明(DRD)”,适合软件项目经理、需求分析师、系统设计人员及文档编写者在项目立项或需求阶段参考使用。模板依照标准文档结构组织,完整覆…

2026/9/6 18:28:09

量子芯片低温控制系统功耗优化:从mK温区到热锚设计

简介:面向量子计算与低温工程领域的技术资料,这份PDF文档围绕量子芯片低温控制系统的设计与功耗优化展开,适合量子硬件研发工程师、低温系统设计人员及高校相关专业研究生参考学习。资源共1个PDF文件,大小13.19MB,内容…

2026/9/6 0:06:59

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/6 0:06:59

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/6 0:06:59

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/6 0:06:59

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/6 0:06:59

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/6 0:06:59

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/6 11:40:10

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/5 2:30:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/6 10:19:40

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…