- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基数排序的思想-数据结构课程教学网站-绍兴文理学院
* (第二十三 讲) 绍兴文理学院 计算机系计算机应用教研室 AAA BBBB 特殊的优秀排序 50000 个整数的基数排序 S23_1 AAA BBBB 第8章 排序(4) 一、教学目的:掌握基数排序的思想、方法、技术、算法、时间复杂度和空间复杂度;算法设计训练;掌握各种内部排序算法的性能和特点;初步掌握选取排序方法时需要考虑的因素;基本掌握选择合适排序的方法。 二、教学重点:基数排序的思想、方法、技术、算法、时间复杂度和空间复杂度;各种内部排序算法的性能和特点;算法设计训练。 三、教学难点:基数排序的思想、方法、技术和算法;算法设计。 四、教学过程: AAA BBBB §8.6 基数排序 基数排序(Radix Sorting)是根据关键字中各位的值,通过对待排序记录进行若干趟“分配”与“收集”来实现排序的,是一种借助于多关键字排序的思想对单关键字排序的方法。§8.6.1 多关键字的排序 已知扑克牌中52张牌面的次序关系为: TKS * 每一张牌有两个“关键字”:花色(????)和面值(23…A),且“花色”的地位高于“面值”,在比较任意两张牌面的大小时,必须先比较“花色”,若“花色”相同,则再比较面值。 1、最高位优先法(MSD法和最低位优先LSD法) 先按不同“花色”分成有次序的4堆,每一堆的牌均具有相同的“花色”,然后分别对每一堆按“面值”大小整理有序。 ?2?3…?A?2?3…?A?2?3…?A?2?3…?A AAA BBBB 2、最低位优先法(LSD法) TKS * 这是一种“分配”与“收集”交替迸行的方法。先按不同“面值”分成13堆,然后将这13堆牌自小至大叠在一起,然后将每堆按照面值的次序收集到一起。再重新对这些牌按不同“花色”分成4堆,最后将这4堆牌按花色的次序再收集到一起,此时同样得到一副满足如上次序关系的牌。 §8.6.2 链式基数排序 1、算法思想 类似于上述“最低位优先法”的洗牌过程,是借助“分配”和“收集”两种操作对单逻辑关键字进行排序的一种内部排序方法。 例如,若关键字K是O≤K≤999范围内的整数数值,即可认为K由3个关键字(K0,K1,K2)组成。 AAA BBBB 2、例:学生记录含三个关键字:系别、班号和班内的序列号,其中以系别为最主位关键字。 TKS * LSD的排序过程如下: 3,2,30 无序序列 1,2,15 3,1,20 2,3,18 2,1,20 1,2,15 对K2排序 2,3,18 3,1,20 2,1,20 3,2,30 3,1,20 对K1排序 2,1,20 1,2,15 3,2,30 2,3,18 1,2,15 对K0排序 2,1,20 2,3,18 3,1,20 3,2,30 AAA BBBB 3、有关概念 设记录的逻辑关键字由d个“关键字”组成,每个关键字可能取rd个值。只要从最低数位关键字起,按关键字的不同值将序列中记录“分配”到rd个队列中后再“收集”之,如此重复d次完成排序。 按这种方法实现排序称之为基数排序,其中“基”指的是rd的取值范围。4、方法步骤 (1) 待排序记录以指针相链,构成一个链表; (2) 分配时,按当前“关键字位”所取值,将记录分配到不同的 “链队列” 中,每个队列中记录的 “关键字位” 相同; (3) “收集”时,按当前关键字位取值从小到大将各队列首尾相链成一个链表; (4) 对每个关键字位均重复 (2)和(3)两步。 TKS * AAA BBBB e[0] e[1] e[2] e[3] e[4] e[5] e[6] e[7] e[8] e[9] 5、示例 278 109 063 930 589 184 505 269 008 083 f[0] f[1] f[2] f[3] f[4] f[5] f[6] f[7] f[8] f[9] 278 109 930 184 505 063 589 269 008 083 930 063 083 184 505 278 008 109 589 269 TKS * AAA BBBB 930 063 083 184 505 278 008 109 589 269 f[0] f[1] f[2] f[3] f[4] f[5] f[6] f[7] f[8] f[9] e[0] e[1] e[2] e[3] e[4] e[5] e[6] e[7] e[8] e[9] 930 063 505 278 083 184
文档评论(0)