- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构结果解析第10章排序学习与指导
第10章 排序
10.1 知识点分析
1.排序基本概念:
(1)排序 将数据元素的任意序列,重新排列成一个按关键字有序(递增或递减)的序列的过程称为排序。
(2)排序方法的稳定和不稳定若对任意的数据元素序列,使用某个排序方法,对它按关键字进行排序,若对原先具有相同键值元素间的位置关系,排序前与排序后保持一致,称此排序方法是稳定的;反之,则称为不稳定的。
(3)内排序整个排序过程都在内存进行的排序称为内排序,本书仅讨论内排序。
(4)外排序待排序的数据元素量大,以致内存一次不能容纳全部记录,在排序过程中需要对外存进行访问的排序称为外排序。
2.直接插入排序
直接插入排序是将一个记录插到已排序好的有序表中,从而得到一个新的,记录数增1的有序表。
3.二分插入排序
二分插入排序用二分查找法在有序表中找到正确的插入位置,然后移动记录,空出插入位置,再进行插入。
4.希尔排序
希尔排序
5.冒泡排序
冒泡法是指每相邻两个记录关键字比大小大的记录往下沉(也可以小的往上浮)。每一遍把最后一个下沉的位置记下,下一遍只需检查比较到此为止;到所有记录都不发生下沉时,整个过程结束。
6.快速排序
快速排序通过一趟将待排序的记录组分割成独立的两部分,其中前一部分记录的关键字均比枢轴记录的关键字小;后一部分记录的关键字均比枢轴记录的关键字大,枢轴记录得到了它在整个序列中的最终位置并被存放好。第二趟再分别对分割成两部分子序列,再进行快速排序,这两部分子序列中的枢轴记录也得到了最终在序列中的位置而被存放好,并且它们又分别分割出独立的两个子序列。
7.简单选择排序
(1)初始状态:整个数组r划分成两个部分,即有序区(初始为空)和无序区。
(2)基本操作:从无序中选择关键字值最小的记录,将其与无序区的第一个记录交换(实质是添加到有序区尾部)。
(3)从初态(有序区为空)开始,重复步骤(2),直到终态(无序区为空)。
8.堆排序
9.归并排序
归并排序是将两个或两个以上的有序子表合并成一个新的有序表。其基本思想是:
将n个记录的待排序序列看成是有n个长度都为1的有序子表组成。
将两两相邻的子表归并为一个有序子表。
重复上述步骤,直至归并为一个长度为n的有序表。
10.各种排序方法的比较
评估一个排序法的好坏,除了用排序的时间及空间外,尚需考虑稳定度、最坏状况和程序的编写难易程度。以下就常用的排序法按最坏情况下所需时间、平均所需时间、是否属于稳定排序、所需的额外空间等表10-1。
10-1 排序性能比较表
排序法 最坏所需时间 平均所需时间 稳定性 所需的额外空间 直接插入 O (n 2) O (n 2) Yes O (1) 希尔排序 O (n 2) O (n1.3) No O (1) 冒泡排序 O (n 2) O (n 2) Yes O (1) 快速排序 O (n 2) O (nlog2n) No O (log2n) 选择排序 O ( n 2) O (n 2) Yes O (1) 堆排序 O (nlog2n) O (nlog2n) No O (1) 归并排序 O (nlog2n) O (nlog2n) Yes O (n)
10.2 典型习题分析
【例1】 当初始序列已按关键字有序时,用直接插入算法进行排序,需要比较次数为 )。
An-1 B.log2n C.2log2n D.n2
分析:直接插入排序是每趟从待排序列中取一个元素,按关键字从有序区间的尾部向前查找插入位置。当初始序列已按关键字值有序时,则每趟比较一个就找到了正确位置,就是本身位置,则n个元素需要进行n-1趟排序,故总的比较为n-1次,答案为A。
【例2】一组记录的键值为(12,38,35,25,74,50,63,90),按2路归并排序方法对该序列进行一趟归并后的结果为( )A.12,38,25,35,50,74,63,90 B.12,38,35,25,74,50,63,90
C.12,25,35,38,50,74,63,90 D.12,35,38,25,63,50,74,90
分析:2归并排序是将两个有序子表合并成一个新的有序表。其基本思想是:
1)将n个记录的待排序序列看成是有n个长度都为1的有序子表组成;2)将两两相邻的子表归并为一个有序子表;重复上述步骤,直至归并为一个长度为n的有序表。
初始值 12 38 35 25 74 50 63 90
第一趟12 38 25 35 50 74 63 90
答案为A。
【例3】排序的记录初态是按码值降序排列的,若欲将其按
文档评论(0)