- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
排序38沉449
* 第十章 内部排序 10.1 概述 10.2 插入排序 10.2.1 直接插入排序 10.2.2 折半插入排序 10.3 交换排序 10.4 选择排序 10.4.1 简单选择排序 10.4.2 树形选择排序 10.4.3 堆排序 10.1 概述 1、排序的定义 2、外部排序和内部排序 3、内部排序的方法的分类 1、排序的定义 排序是计算机内经常进行的一种操作,其 目的是将一组“无序”的数据集合或序列重新排列为一组按数据元素的某个数据项的值“有序”的序列。 例如:将下列关键字的序列 52,49,80,36,14,58,61,23,97,75 调整为:14,23,36,49,52,58,61,75,80,97 一般情况下, 假设含n个记录的序列为{R1,R2,…,Rn} 相应的关键字的序列为{K1,K2,…Kn} 这些关键字相互之间可以进行比较,即在 它们之间存在这样一种关系 Kp1≤Kp2≤…≤Kpn 按此固有关系,将上式记录序列重新排列为 {Rp1,Rp2,…,Rpn} 的操作称为排序。 稳定 不稳定 2、外部排序和内部排序 若整个排序过程完全放在内存中进行,不需要访问外存就能够完成,则称此类排序问题为内部排序,适合不太大的元素序列。 反之,如果参加排序的记录数量很大,整个 序列的排序过程不可能在内存中完成,需要访问外存储器,排序过程中数据在内存和外存之间需要多次移动,则称此类排序问题为外部排序。 评价排序方法好坏的标准:执行所需的时间和空间。 3、内部排序的方法的分类 内部排序的过程是一个逐步扩大记录的 有序序列长度的过程。 有序序列区 无序序列区 一趟排序 有序序列区 无序序列区 逐步扩大记录的有序序列长度的方法: 插入类 交换类 选择类 归并类 其他方法 1)插入类 将无序子序列中的一个或几个记录“插入” 到有序序列中,从而增加记录的有序子序列的 长度。 2)交换类 通过“交换”无序序列中的记录,从而得到 其中关键字最小或者最大的记录,并将它加入到 有序子序列中,以此方法增加记录的有序子序列 的长度 3)选择类 从记录的无序子序列中“选择”关键字最小或者 最大的记录,将它插入到有序子序列中,以此方法 增加有序序列的长度。 4)归并类 通过“归并”两个或者两个以上的记录有序子序列,逐步增加记录有序序列长度。 5)其他方法(例:基数排序等) 10.2 插入排序 一趟直接插入排序的基本思想: 有序序列区R[1..i-1] 无序序列区R[i..n] R[i] 有序序列区R[1..i] 无序序列区R[i+1..n] 实现“一趟直接插入排序”可分三步进行: 1、在记录R[1..i-1]中查找R[i]插入的位置: R[1..j]≤R[i]<R[j+1..i-1] 2、将R[j+1..i-1]中的所有记录均往后移一个位置; 3、将R[i]复制到R[j+1]的位置上; 10.2.1 直接插入排序 利用顺序查找实现“在记录R[1..i-1]中查找R[i] 插入的位置”. 开始时将R[1]当作有序子序列. void D_InsertSort(DataType R[],int n){ int i; } for(i=2;i≤n;i++) if(R[i].key R[i-1].key){ } 将R[i] 插入到R[1..i-1]中; R[0]=R[i]; //监视哨设置 for(j=i-1; R[0].key R[j].key;--j) R[j+1]=R[j]; //记录后移 R[j+1]=R[0]; //插入到正确位置 排序的时间分析 实现排序的基本操作有两个: (1)“比较”序列中两个关键字的大小; (2)“移动”记录; 取决于初始序列的情况. 考虑两个极端的情况: 最好的情况:关键字在记录中顺序有序 “比较”的次数: “移动”的次数: n-1 0 最坏的情况:关键字在记录中逆序有序 “比较”的次数: ∑(i+1)=(n+4)(n-1)/2 ∑i=(n+2)(n-1)/2 时间复杂度:O(n2) “移动”的次数: i=2 n i=2 n 10.2.2 折半插入排序 void B_InseertSort(DataType R[ ],int n){ int i,low,high,mid; for(i=2;i=n;i++){ R[0]=R[i]; //保存待插入元素 low=1;high=i-1;
您可能关注的文档
- 脑卒中的治动疗进展.ppt
- 脑复苏集般束化治疗策略.ppt
- 脑卒中紧急诊理治规范.ppt
- 脑卒中诊断与希鉴别诊断.ppt
- 内3科——急河性心肌梗死护理课件.ppt
- 脑卒中主仰要并发症的处理.ppt
- 内耳畸形影与像表现.ppt
- 脑血管病广命东省中医院芳村分院.ppt
- 内分泌核甸医学上课.ppt
- 脑血管疾病了影像学.ppt
- 2025年半钢子午胎行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年耳鼻喉科止血材料行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年5-甲基吲哚行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年电铲钢丝绳行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年光学掩模版行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年高纯钴靶材行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年半钢子午线轮胎行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年5-氰基吲哚行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年光子刀行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年电池板模块行业洞察报告及未来五至十年发展趋势预测报告.docx
最近下载
- 耕地质量等级+(GBT+33469-2016).docx VIP
- 人教版高中物理必修一课件.pptx VIP
- 新生儿高胆红素血症诊治指南(2025)解读 (1)PPT课件.pptx VIP
- 《新生儿高胆红素血症诊治指南(2025)》解读(1)PPT课件.pptx VIP
- SGT756国电南自保护培训全解.ppt VIP
- 建设工程工程量清单计价办法(市政工程定额章节说明).pdf VIP
- 盘扣模板支撑体系技术交底(二级).docx VIP
- 精创温控器EK-3010说明书用户手册.pdf
- 外墙涂料施工安全技术交底.doc VIP
- 在线网课学习课堂《舰艇操纵与避碰》单元测试考核答案.docx VIP
文档评论(0)