- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第8章排序;归并:将两个或两个以上的有序表组合成一个新有序表;将两个有序表合并成一个有序表;思考;初始关键字:[49][38][65][97][76][13][27];对n个记录进行归并排序,归并趟数的数量级是;时间效率O(nlog2n)
空间效率O(n)
稳定性稳定;前面的排序方法主要通过关键字值之间的比较和移动
而基数排序不需要关键字之间的比较
利用多关键字排序方法进行排序;对52张扑克牌按以下次序排序:
?2?3……?A?2?3……?A
?2?3……?A?2?3……?A
两个关键字:花色(????)
面值(23……A)
并且“花色”地位高于“面值”;用链表作存储结构的基数排序
每一位作为关键字。
;最高位优先MSD(MostSignificantDigitfirst)
最低位优先LSD(LeastSignificantDigitfirst);;先对最高位关键字k1排序,将序列分成若干子序列,每个子序列有相同的k1值;
然后让每个子序列对次关键字k2(如面值)排序,又分成若干更小的子序列;
依次重复,直至就每个子序列对最低位关键字kd排序,就可以得到一个有序的序列。;首先依据最低位对所有记录进行一趟排序
再依据次低位对上一趟排序结果排序
依次重复,直到最后一趟排序完成,就可以得到一个有序的序列。;例如;先决条件:
知道各级关键字的主次关系
知道各级关键字的取值范围
;过程
首先对低位关键字排序,各个记录按照此位关键字的值‘分配’到相应的序列里。
按照序列对应的值的大小,从各个序列中将记录‘收集’,收集后的序列按照此位关键字有序。
在此基础上,对下一位关键字进行排序。;278;505;008;设置10个队列,f[i]和e[i]分别头指针和尾指针
第一趟分配对最低位关键字(个位)进行,改变记录的指针值,将链表中记录分配至10个链队列中,每个队列记录的关键字的个位相同
第一趟收集是改变所有非空队列的队尾记录的指针域,令其指向下一个非空队列的队头记录,重新将10个队列链成一个链表
重复上述两步,进行第二趟、第三趟分配和收集,分别对十位、百位进行,最后得到一个有序序列;给出关键字序列{321,156,57,46,28,7,331,33,34,63},下面哪个选择是按次位优先(LSD)链式基数排序进行了一趟分配和收集的结果?;n个记录
每个记录有d位关键字
关键字取值范围rd(如十进制为10);需要2rd个队列指针,链表增加n个指针域。;(数据不是顺次后移时将导致方法不稳定);为避免顺序存储时大量移动记录的时间开销,可考虑用链表作为存储结构
直接插入排序、归并排序、基数排序;1.平均的时间性能;2.当待排记录序列按关键字顺序有序时;指的是排序过程中所需的辅助空间大小;3.归并排序所需辅助空间最多,其空间复杂度为O(n);;1.稳定的排序方法指的是,对于两个关键字相等的记录,它们在序列中的相对位置,在排序之前和经过排序之后,没有改变。;3.对于不稳定的排序方法,只要能举出一个实例说明即可。;(1)分布随机,稳定性不做要求,则采用快速排序
(2)内存允许,要求排序稳定时,则采用归并排序
(3)可能会出现正序或逆序,稳定性不做要求,则采用堆排序或归并排序;(1)基本有序,则采用直接插入排序
(2)分布随机,则采用简单选择排序,若排序码不接近逆序,也可以采用直接插入排序;本章讨论的各种排序方法,除基数排序外,其它方法都是基于“比较关键字”进行排序的排序方法。;;一般情况下,对n个关键字进行排序,可能得到的结果有n!种,由于含n!个叶子结点的二叉树的深度不小于?log2(n!)?+1,则对n个关键字进行排序的比较次数至少是?log2(n!)??nlog2n(斯蒂林近似公式)。;归并排序算法是稳定的排序方法。;将序列{2,12,16,88,5,10,34}排序。若前2趟排序的结果如下:
第1趟排序后:2,12,16,10,5,34,88
第2趟排序后:2,5,10,12,16,34,88
则可能的排序算法是:;选择一个排序算法时,除算法的时空效率外,还需要考虑的是:
I、数据的规模
II、数据的存储方式
III、算法的稳定性
IV、数据的初始状态;在基于比较的排序算法中,哪种算法的最坏情况下的时间复杂度不高于O(NlogN)??;下面四种排序算法中,稳定的算法是??;就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是:
您可能关注的文档
- (20)--3.室内设计照明基础知识.ppt
- (20)--4.2.3 宏量营养素-4.2脂类-4.2.3 深海鱼油中有什么.ppt
- (20)--10 电存储技术1 DRAM与SRAM2159数据存储那些事儿.doc
- (20)--第6章 查找-B树数据结构.ppt
- (20)--第二章第七节线性表的应用.pdf
- (21)--2.2.4管路的工作特性.ppt
- (21)--3.室内设计的学习方法.ppt
- (21)--4.2.4 宏量营养素-4.2脂类-4.2.4 氢化植物油对人体.ppt
- (21)--11 电存储技术2 ROM2272数据存储那些事儿.doc
- (21)--第2章线性表第6讲-循环链表数据结构.pdf
文档评论(0)