版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
7-5归并排序v第七章排序技术学什么?二路归并排序的递归实现二路归并排序的非递归实现提出关键问题给出解决方法写出算法描述得到完整算法运行实例7-5-1二路归并排序的递归实现v第七章排序技术基本思想二路归并排序的基本思想:将待排序序列划分为两个长度相等的子序列,分别对这两个子序列进行排序,得到两个有序子序列,再将这两个有序子序列合并成一个有序序列。r1rn/2…rn…rn/2+1划分r1'rn/2'≤…
≤rn'rn/2+1'≤…
≤r1''rn/2''≤…
≤rn''rn/2+1''≤…
≤≤运行实例2420101812待排序序列16划分242010181216分别排序101224161820合并101216182024一次合并:合并两个相邻的有序子序列20254050152130合并可以就地进行吗?ijk
temp[]15
算法描述:while(i<=last1&&j<=last2){if(data[i]<=data[j])temp[k++]=data[i++];elsetemp[k++]=data[j++];}first1last1last1+1last2data[]关键问题如何表示两个相邻的子序列?某个子序列比较完毕,做什么?算法描述:while(i<=last1)temp[k++]=data[i++];while(j<=last2)temp[k++]=data[j++];202130
4050
算法实现voidSort::Merge(intfirst1,intlast1,intlast2){int*temp=newint[length];inti=first1,j=last1+1,k=first1;while(i<=last1&&j<=last2){if(data[i]<=data[j])temp[k++]=data[i++];elsetemp[k++]=data[j++];}while(i<=last1)temp[k++]=data[i++];while(j<=last2)temp[k++]=data[j++];for(i=first1;i<=last2;i++)data[i]=temp[i];delete[]temp;}递归算法voidSort::MergeSortRecusion(intfirst,intlast){if(first==last)return;else{intmid=(first+last)/2;MergeSort1(first,mid);MergeSort1(mid+1,last);Merge(first,mid,last);}}r1rn/2…rn…rn/2+1划分r1'rn/2'≤…
≤rn'rn/2+1'≤…
≤r1''rn/2''≤…
≤rn''rn/2+1''≤…
≤≤7-5-2
二路归并排序的非递归实现v第七章排序技术执行过程252040153010182025251540203010181540103018待排序序列第一趟归并结果第二趟归并结果第三趟归并结果1520254010183010151820253040构造初始有序子序列子序列长度有什么规律?在一趟归并中有几种情况?一趟归并设i
指向待归并序列的第一个记录,归并的步长是2h情况1:i+2h≤n,则相邻两个有序子序列的长度均为hihhi+2hnwhile(i+2*h<=length){Merge(i,i+h-1,i+2*h-1);i=i+2*h;}算法描述:voidSort::Merge(intfirst1,intlast1,intlast2)子序列长度有什么规律?在一趟归并中有几种情况?情况2:i+h<n,则相邻有序子序列一个长度为h,另一个长度小于hif(i+h<length)
Merge(i,i+h-1,length-1);算法描述:hii+hn<h一趟归并设i
指向待归并序列的第一个记录,归并的步长是2h子序列长度有什么规律?在一趟归并中有几种情况?voidSort::Merge(intfirst1,intlast1,intlast2)情况3:i
+h≥
n,则表明只剩下一个有序子序列算法实现voidSort::MergePass(inth){inti=0;while(i+2*h<=length){Merge(i,i+h-1,i+2*h-1);i=i+2*h;}if(i+h<length)
Merge(i,i+h-1,length-1);}如何控制二路归并的结束?子序列长度有什么规律?voidSort::MergeSort(){inth=1;while(h<length){MergePass(h);h=2*h;}}25204015202525154020154015202540时间性能执行趟数:log2n每一趟:将记录扫描一遍,O(n)最好、最坏、平均情况:O(nlog2n)二路归并执行多少趟?每一趟的时间性能是多少?空间性能:合并不能就地进行,O(n)稳定性:稳定如果将判断条件改为(r[i]<r[j]),仍然是稳定的吗?w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年第十四师昆玉市学校引进高层次人才备考题库完整参考答案详解
- 2025年湖北洪山实验室知识产权专员及条件保障管理人员招聘备考题库及一套参考答案详解
- 2025年中国中医科学院望京医院公开招聘国内应届高校毕业生(提前批)备考题库及参考答案详解一套
- 2025年西安交通大学第一附属医院胸外科招聘派遣制助理医生备考题库及答案详解参考
- 2025年上海第九人民医院成果转化办公室招聘办公室工作人员备考题库及1套完整答案详解
- 医疗器械售后维修技术支持经理考题及答案参考
- 通号工程师岗位考核标准
- 通信行业软件测试工程师面试技巧
- 建筑行业审计科长招聘考试题目集
- 财务部经理面试题及答案解析
- 煤矿用履带式液压钻机ZDY2300LX说明书-图文
- 2023年南通启东市邮政局招考笔试参考题库(共500题)答案详解版
- 多媒体系统维保服务投标方案
- JCT890-2017 蒸压加气混凝土墙体专用砂浆
- 深圳亚马逊超级大卖副总制定的亚马逊运营SOP计划表
- 海洋与海洋测绘课件
- 钢筋工程的验收要点
- 康复治疗学Bobath技术
- 上海市九年义务教育阶段写字等级考试(一级)硬笔方格收写纸
- 语料库和知识库的研究现状
- 南部三期污水处理厂扩建工程项目环评报告
评论
0/150
提交评论