- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课件第11章
11.4 基 数 排 序 基数排序是和前面所述的各种排序方法完全不同的另一种排序方法。它是借助于多关键字排序的思想进行排序的一种方法。 该方法将排序关键字看作是由多个关键字组成的逻辑关键字,然后通过依次对多关键字的排序来得到按该关键字排序的有序序列。 例如,对一副扑克牌进行排序,每一张牌中的关键字由花色和面值两种关键字组成,其次序可定义如下: 花色:梅花方块红桃黑桃。 面值: 2 3 4 … K A。 假设牌中的关键字是先花色后面值,则花色称为最高关键字,面值称为最低关键字。整个一副牌的次序:梅花2, 梅花3, ……,梅花A, 方块2, 方块3, ……, 方块A, 红桃2, 红桃3, ……, 红桃A, 黑桃2, 黑桃3, ……, 黑桃A。 若要对整个一副扑克牌进行排序,可采用以下两种方法。 第一种方法是将牌先按花色分成四堆,然后将每堆按面值从小到大排列,最后按花色从小到大叠在一起,便得到要求的排序结果。 第二种方法是先按面值大小分成13堆,然后从小到大收集起来,再按花色分成4堆,最后收集起来就得到要求的排序结果。 这两种方法的共同特点是先分配后收集,所不同的是第一种方法先按花色分配而第二种方法先按面值分配。 假设有n个元素(R1, R2, …, Rn),对每个元素Ri都有d个关键字 ,如果对任意两个元素Ri,Rj (1≤ij≤n), 都满足: 则称该序列对(K1, K2, …, Kd)是有序的。 其中K1称为最高关键字, Kd称为最低关键字。 多关键字排序一般可采用的方法有两种。 1. 最高位优先(MSD方法) 最高位优先排序是指按最高位关键字从小到大分成若干子序列, 对每个子序列再按第二关键字排序(细分子序列), 这样逐级细分子序列直至细分到最后一位关键字,最后再将所有的子序列依次连在一起成为有序序列。简单的说这一过程也就是从高到低逐级细分子序列的过程。 2. 最低位优先(LSD方法)排序 最低位优先排序是指将整个序列先按最低位的关键字进行排序,即先按该关键字的大小分成若干子序列再将它们收集起来, 从而得到一个新的序列, 然后对这个新的序列按次低位的关键字进行排序,又得到一个新的序列,这样经过d次的“分”与“合”的过程, 最后得到的序列为有序序列。简单地说,这一过程也就是从低到高进行d次“分配”与“收集”的过程。 例如,在对扑克牌进行排序的例子中,所采用的第一种方法就是最高位优先的方法,而所采用的第二种方法就是最低位优先的方法。 在多关键字排序中,常使用d表示关键字的位数, 用rd表示关键字可取值的种数。例如,关键字为一个3位数,则d=3,每一位关键字为数字, rd=10; 如果关键字长度为4的字符串,则d=4,每一位关键字为字母,rd=26。 基数排序的基本思想是:将一个序列中的逻辑关键字看成是由d个关键字复合而成的,并采用最低位优先方法对该序列进行多关键字排序。即从最低关键字开始,将整个序列中的元素“分配”到rd个队列中,再依次收集成一个新的序列,如此重复进行d次,即完成排序的过程。 基数排序也称为分配排序。 执行基数排序可采用静态链表的存储结构,用一个长度为n的一维数组R存放待排序的n个元素,再使用两个长度为rd的一维数组f和e分别存放rd个队列中头元素和最后元素的序列。有关的类型定义如下: chtype=c1..crd; recnode=record key: array[1..d] of chtype; ……; next: integer; end; listtp=array[1..n] of recnode; arrtp=array[1..rd] of integer; 图 11.8 堆的示例 (a) 堆顶元素取最小值; (b) 堆顶元素取最大值 堆排序的基本处理过程是:对一组待排序的元素序列,首先按关键字建立起一个堆(称为初建堆),取出堆顶元素(即为序列中关键字最小的元素)后将剩余的元素调整成一个新堆, 再取出堆顶元素(即为序列中关键字次小的元素)后将剩余的元素调整成一个新堆,如此反复进行,直至取出序列中的所有元素。这样,按元素的取出次序构成了一个有序序列,即完
您可能关注的文档
最近下载
- 光伏电站的运行与维护规范.pdf
- 危化企业加油加气站双重预防机制手册.doc VIP
- 《首批重点监管的危险化学品名录》.pdf VIP
- 设计的创造性思维和工程思维 课件 高中通用技术粤科版 必修 技术与设计 .ppt VIP
- 兄弟 HL-4150CDN 4570CDW 4150 4570 彩色激光打印机中文维修手册.pdf VIP
- 医护人员职业安全与防护.pptx VIP
- 常用量具、检具测量基础知识试题(附答案).docx VIP
- 建设工程造价鉴定规范.pdf VIP
- 2025年中国石化校园招聘确认笔试参考题库附带答案详解.docx
- 现代家政学概论-ppt6.1第一节服装搭配.pptx VIP
文档评论(0)