- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构》 第十章 内部排序 (下) 数据结构 tjm * 10.5 归并排序 归并——将两个或两个以上的有序表组合成一个新的有序表。 多路归并排序:将三个或三个以上有序子区间合并成一个有序子区间的排序,称为多路归并排序。常见的有三路归并排序、四路归并排序等,具体实现的方法与二路归并排序类似。 算法参见P283, P284 2-路归并排序 排序过程:设初始序列含有n个记录,则可看成n个有序的子序列,每个子序列长度为1。两两合并,得到?n/2?+1个长度为2或1的有序子序列。再两两合并,……如此重复,直至得到一个长度为n的有序序列为止。 例: 初始关键字: [49] [38] [65] [97] [76] [13] [27] 一趟归并后: [38 49] [65 97] [13 76] [27] 二趟归并后: [38 49 65 97] [13 27 76] 三趟归并后: [13 27 38 49 65 76 97] 算法评价 时间复杂度:T(n)=O(nlog2n) 空间复杂度:S(n)=O(n) 例: 对52张扑克牌按以下次序排序: ?2?3……?A?2?3……?A ?2?3……?A?2?3……?A 两个关键字:花色( ???? ) 面值(23……A) 并且“花色”地位高于“面值”。 10.6 基数排序 10.6.1 多关键字排序 多关键字排序定义:在实际应用中,有时的排序会需要按几种不同排序码来排序。对于多关键字排序(假设有d个关键字),则可以按第1、2、…、d个关键字的顺序排序,也可以按第d、d-1、d-2、…、2、1个关键字的顺序排序。 最高位优先法(MSD):先对最高位关键字k1(如花色)排序,将序列分成若干子序列,每个子序列有相同的k1值;然后让每个子序列对次关键字k2(如面值)排序,又分成若干更小的子序列;依次重复,直至就每个子序列对最低位关键字kd排序;最后将所有子序列依次连接在一起成为一个有序序列。最低位优先法(LSD):从最低位关键字kd起进行排序,然后再对高一位的关键字排序,……依次重复,直至对最高位关键字k1排序后,便成为一个有序序列。 MSD与LSD不同特点:按MSD排序,必须将序列逐层分割成若干子序列,然后对各子序列分别排序。按LSD排序,不必分成子序列,对每个关键字都是整个序列参加排序;并且可不通过关键字比较,而通过若干次分配与收集实现排序。 多关键字排序方法 10.6.2 链式基数排序 基数排序:借助“分配”和“收集”对单逻辑关键字进行排序的一种方法。链式基数排序:用链表作存储结构的基数排序。链式基数排序步骤:设置10个队列,f[i]和e[i]分别为第i个队列的头指针和尾指针。第一趟分配对最低位关键字(个位)进行,将链表中记录分配至10个链队列中,每个队列记录的关键字的个位相同。第一趟收集是改变所有非空队列的队尾记录的指针域,令其指向下一个非空队列的队头记录,重新将10个队列链成一个链表。重复上述两步,进行第二趟、第三趟分配和收集,分别对十位、百位进行,最后得到一个有序序列。 例: 初始状态: 278 109 063 930 589 184 505 269 008 083 109 589 269 278 063 930 083 184 505 008 e[0] e[1] e[2] e[3] e[4] e[5] e[6] e[7] e[8] e[9] f[0] f[1] f[2] f[3] f[4] f[5] f[6] f[7] f[8] f[9] 一趟分配 930 063 083 184 505 278 008 109 589 269 一趟收集: 505 008 109 930 063 269 278 083 184 589 二趟收集: 083 184 589 063 505 269 930 e[0] e[1] e[2] e[3] e[4] e[5] e[6] e[7] e[8] e[9] f[0] f[1] f[2] f[3] f[4] f[5] f[6] f[7] f[8] f[9] 二趟分配 008 109 278 930 063 083 184 505 278 008 109 589 269 一趟收集: 008 063 083 109 184 269 278 505 589 930 三趟收集: 109 008 184 930 e[0] e[1] e[2] e[3] e[4] e[5] e[6] e[7] e[8]
您可能关注的文档
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十一章 房地产销售.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十章 房地产开发项目市场推广.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第四章 城市房屋拆迁.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第五章 房地产开发项目资金的筹集.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第一章 房地产开发导论.ppt
- 石河子大学水利建筑工程学院建筑材料课件 防水材料.ppt
- 石河子大学水利建筑工程学院建筑材料课件 混凝土.ppt
- 石河子大学水利建筑工程学院建筑材料课件 混凝土配合比设计.ppt
- 石河子大学水利建筑工程学院建筑材料课件 建筑钢材.ppt
- 石河子大学水利建筑工程学院建筑材料课件 建筑砂浆.ppt
文档评论(0)