- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
将排序方法分为基于比较的排序和不基于比较的排序,其中,基于比较的排序方法的实现主要是通过关键码的比较和记录的移动这两种操作,并且其最差时间下限已经被证明为Ω(nlog2n) 内排序大致可分为插入排序、交换排序、选择排序、归并排序等四类;内排序还可分为两类:⑴简单的排序方法,其时间复杂度为O(n2);⑵先进的排序方法,其时间复杂度为O(nlog2n)。 直接插入排序过程示例 直接插入排序过程示例 希尔插入排序过程示例 起泡排序过程示例 需解决的关键问题 问题⑴的解决 问题⑵的解决 问题⑶的解决 需解决的关键问题 8.3.2 快速排序 改进的着眼点是:在起泡排序中,记录的比较和移动是在相邻单元中进行的,记录每次交换只能上移或下移一个单元,因而总的比较次数和移动次数较多。 在快速排序中,记录的比较和移动是从两端向中间进行的,关键码较大的记录一次就能从前面移动到后面的单元,关键码较小的记录一次就能从后面移动到前面的单元,记录每次移动的距离较远,从而减少了总的比较次数和移动次数。 快速排序的基本思想 首先选一个轴值(即比较的基准),通过一趟排序将待排序记录分割成独立的两部分,前一部分记录的关键码均小于轴值,后一部分记录的关键码均大于或等于轴值,然后分别对这两部分重复上述方法,直到整个序列有序。 ⑴如何选择轴值? ⑵在每个子序列内如何实现快速排序(通常叫做一次划分)? ⑶如何处理分区得到的两个待排序子序列? ⑷如何判别快速排序的结束? 13 65 27 50 38 49 55 j i j j 13 65 27 50 38 49 55 j i i i 13 65 27 50 38 49 55 i j j j 一次划分示例 问题⑴的解决 选择轴值的方法: (1)使用第一个记录的关键码; (2)选取序列中间记录的关键码; (3)比较序列中第一个记录、最后一个记录和中间记录的关键码,取关键码居中的作为轴值并调换到第一个记录的位置; (4)随机选取轴值。 问题⑵的解决 设待划分的序列是r[s] ~ r[t],设参数i,j分别指向子序列左、右两端的下标s和t,令r[s]为轴值, (1)j从后向前扫描,直到r[j]r[i],将r[j]移动到r[i]的位置,使关键码小(同轴值相比)的记录移动到前面去; (2)i从前向后扫描,直到r[i]>r[j],将r[i]移动到r[j]的位置,使关键码大(同轴值比较)的记录移动到后面去; (3)重复上述过程,直到i=j,即指向同一位置。 整个快速排序的过程可递归进行。若待排序列中只有一个记录,显然已有序,否则进行一趟快速排序后,再分别对分割所得的两个子序列进行快速排序(即递归处理)。 问题⑶、⑷的解决 13 27 50 38 49 55 j i i j 13 65 27 50 38 49 55 快速排序的执行过程 65 void quickSort (int r[ ], int first, int end ) {//在序列 first~end中递归地进行快速排序 if ( first end) { pivotpos = partition (r, first, end ); quickSort (r, first, pivotpos-1); quickSort (r, pivotpos+1, end ); } } 快速排序算法 快速排序的时间性能分析 快速排序的趟数取决于递归的深度 。 最好情况:每一次划分对一个记录定位后,该记录的左侧子表与右侧子表的长度相同,为O(nlog2n)。 最坏情况(正序或逆序):每次划分只得到一个比上一次划分少一个记录的子序列(另一个子序列为空),为 O(n2)。 平均情况:为O(nlog2n)。 08 16 21 25 28 49 0 1 2 3 4 5 初始 16 21 25 28 49 08 21 25 28 49 08 16 25 28 49 08 16 21 28 49 08 16 21 25 49 08 16 21 25 28 i = 1 i = 2 i = 3 i = 4 i = 5 快速排序退化的例子 ——选择排序 主要思想:每趟排序在当前待排序序列中选出关键码最小的记录,添加到有序序列中。 有序序列 无序序列 选出最小记录 有序序列 无序序列 一趟排序后
您可能关注的文档
- Discuz_X1的程序目录及文件列表模板文件结构说明大全.doc
- discuz二次开发.doc
- Discuz结构说明.doc
- donet通过注释生成帮助文档.doc
- dos at命令.doc
- Dos at命令,自动关机与重启.doc
- DOS基础.doc
- 《Java_Web应用开发技术实用教程》-王红第3章_JSP隐含对象.ppt
- 《操作系统》第4章 存储管理.ppt
- 《操作系统》第4章 存储管理1.ppt
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
最近下载
- 《中国结核病预防控制工作技术规范(2020年版)》.PDF VIP
- 2023年北京市中考英语真题(含答案) .pdf VIP
- 南通大学2023-2024学年《病理学》期末考试试卷(A卷)附参考答案.docx
- 胸部损伤-教学课件.ppt VIP
- 某银行数据中心搬迁整体实施方案.pdf VIP
- 麦肯锡中国银行业CEO季刊(2020年秋)-麦肯锡-224页正式版.pdf VIP
- 国家公务员录用考试体检标准.doc VIP
- 入党申请书时事政治精选五篇.docx VIP
- 农村公路安全生命防护工程监理规划49943.doc VIP
- 高中英语3500词【打印版】乱序版3500词汇(带音标120页).pdf VIP
文档评论(0)