第三章_查找与排序技术总汇.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2. 基数排序 基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。 多关键字排序: 一个具体的例子:已知扑克牌中52张牌面的次序关系为: 基数排序 每一张牌有两个“关键字”: 花色: 面值:23……A 且“花色”的地位高于“面值”,即在比较任意两张牌面的大小时,必须先比较“花色”( ? ? ? ? ),若“花色”相同,则再比较面值。 也可以采用另一种方法: 先按不同的“面值”分成13堆; 然后将这13堆牌自小至大叠在一起(“3”在“2”之上,“4”在“3”之上,……最上面的是4张“A”); 然后将这付牌整个颠倒过来再重新按不同“花色”分成4堆,最后将这4堆牌按自小至大的次序合在一起。 此时同样得到一付满足如上次序关系的牌。 以上两种整理扑克牌的方法便是两种多关键字的排序方法。 为了实现多关键字排序,通常有两种方法; 方法一 :最高位优先法MSD 先对最主位关键字K0进行排序,将序列分成若干子序列,每个子序列中的记录都具有相同的K0值; 然后分别就每个子序列对关键字K1进行排序,按K1值不同再分成若干更小的序列; 依次重复,直到对K进行排序之后得到的每一个子序列中的记录都具有相同的关键字(K0,K1,……Kd-2); 而后分别每个子序列对Kd-1进行排序; 最后将所有子序列依次联接在一起成为一个有序序列。 第二种方法:最低优先法LSD 从最次位关键字Kd-1起进行排序; 然后再对高一位的关键字Kd-2进行排序; 依次重复,直到对K0进行排序后便成为一个有序序列。 图3.11 基数排序例(第200页) 课后练习 3.4(第232页) 设线性Hash表的长度n=12,分别用下列Hash码将关键字序列(09, 12, 04, 16, 19,31,20, 45, 01, 11, 25, 26)填入线性Hash表,并指出各关键字元素在填入过程中的冲突次数。 ⑴ i = mod( k, n ) 课后练习 3.9(第233页) 分别用冒泡排序以及希尔排序对下列线性表进行排序,要求给出中间每一步的结果。 ⑵(424, 887, 807, 709, 882, 616, 573, 413, 679, 180, 975, 264) 课后练习 补充习题01:用堆排序对下列线性表进行排序,要求给出中间每一步的结果。 ⑴ (81,52,57,22,95,04,83,96,42,32,48,78,14,87,67) 课后练习 补充习题02:对分查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找元素58在表中的存储位置,则它将依次与表中哪些元素比较大小,结果是查找失败。 TBC 5 1 7 3 1 6 9 4 2 8 6 ↑j=2 1 5 7 3 1 6 9 4 2 8 6 ↑j=3 1 5 7 3 1 6 9 4 2 8 6 ↑j=4 1 3 5 7 1 6 9 4 2 8 6 ↑j=5 1 1 3 5 7 6 9 4 2 8 6 ↑j=6 红色的部分:有序子表;绿色的部分:之前插入的数字 1 1 3 5 6 7 9 4 2 8 6 ↑j=7 1 1 3 5 6 7 9 4 2 8 6 ↑j=8 1 1 3 4 5 6 7 9 2 8 6 ↑j=9 1 1 2 3 4 5 6 7 9 8 6 ↑j=10 1 1 2 3 4 5 6 7 8 9 6 ↑j=11 1 1 2 3 4 5 6 6

文档评论(0)

4477769 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档