




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2016数据结构Data structure讲授:丁慧分配排序常州信息职业技术学院11分配排序扑克牌是多关键字的,有花色和点数两个关键字,花色取值只有4种,而点数则有13种;三、基数排序基数排序是箱排序的改进和推广。1多关键字排序方法(1)单关键字和多关键字扑克牌有两个关键字:点数和花色。多关键字中的每个关键字的取值范围一般不同,单关键字中的每位一般取值范围相同。三位十进制整数是单关键字的,每位数码的取值范围都是0到9。12分配排序(2)基数设单关键字的每个分量kj的取值范围均是:C0kjCr-1(0jd),可能的取值个数r称为基数。基数的选择和关键字的分解与关键字的类型有关:若关键字是十进制
2、整数,则按个、十等位进行分解,基数r=10,C0=0,C9=9,d为最长整数的位数;若关键字是小写的英文字符串,则r=26,C0= a,C25= z,d为字符串的最大长度。三、基数排序1多关键字排序方法13分配排序(3)多关键字排序方法高位优先法:先按最高位关键字K0对记录进行排序,将文件分成若干堆,每堆中的记录都具有相同的K0值,再对每堆按关键字K1对记录进行排序,如此重复,直到对每堆按关键字Kd-1对记录进行排序,最后将各堆按次序叠在一起成为一个有序文件。低位优先法:先按最低位关键字Kd-1对记录进行排序,再按关键字Kd-2对记录进行排序,如此重复,最后按关键字K1对记录进行排序,得到一个
3、有序文件。三、基数排序1多关键字排序方法 例如:扑克牌先按花色关键字进行排序,花色的顺序为梅花、方块、红桃、黑桃,将扑克牌按花色分成4堆,再对每一堆按面值关键字进行排序,最后将各堆依次叠放在一起得到有序的一副扑克牌,此方法就是高位优先法。另外,扑克牌先按面值关键字进行排序,再按花色关键字进行排序,得到有序的一副扑克牌,此方法就是低位优先法。14分配排序三、基数排序2基数排序基本思路基数排序就是用低位优先法对单关键字(或多关键字)排序的一种方法按低位优先法对关键字进行箱排序,通过“分配”和“收集”实现每趟排序。在每趟箱排序中,所需的箱子数就是基数r,这就是“基数排序”名称的由来15分配排序三、基
4、数排序3基数排序实例 36 5 16 98 95 47 32 36 48第一次装箱按关键字第一个分量(个位)将其装箱。 32 5 95 36 16 36 47 98 48第二次装箱按关键字第二个分量(十位)将其装箱。 5 16 32 36 36 47 48 95 98B0B3B4B5B6B7B8B9B1B2B0B3B4B5B6B7B8B9B1B2361636 59598484732361636 59598484732164、基数排序算法分配排序(1)数据描述#define d 4 /不妨设关键字位数d=4#define r 10/基数r为10typedef RecType DataType/队
5、列中元素的类型DataType设为RecType(2)装箱算法void Distribute(SeqList R,LinkQueue B,int j)/按关键字的第j个分量进行装箱 int i,k,t; for(i=1;i=n;i+)/依次扫描Ri,将其装箱 k=Ri.key; for(t=1;tj;t+) k=k/10;/使Ri.key的第j位成为k的最低位 k=k%10; /取关键字的第j位数字k EnQueue(&Bk,Ri); /将Ri装入箱子Bk三、链表的插入17void RadixSort(SeqList R)/对R1.n进行基数排序,Ri.key为非负整数,且位数不超过dLink
6、Queue Br; /10个箱子,每个都是链队列int i;for(i=0;ir;i+)InitQueue(&Bi); /箱子置空for(i= 1;i=d;i+) /从低位到高位做d趟箱排序Distribute(R,B,i); /第i趟装箱Collect(R,B); /第i趟收集分配排序(3)收集算法void Collect(SeqList R,LinkQueue B)/依次将各非空箱子中的记录收集起来 int i=1,j;/收集时从R1开始存放 for(j=0;jr;j+) while(!QueueEmpty(&Bj)DeQueue(&Bj,&Ri+); /将箱子Bj中的记录放入Ri(4)排序算法4、基数排序算法三、链表的插入18分配排序(1)时间性能 基数排序由于装箱和收集的时间复杂度是线性的,即O(n),而记录关键字的位数d与n无关,所以基数排序的时间复杂度是线性的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行网点流程管理办法
- 混凝土厂房预售管理办法
- 物业企业合同管理办法
- 广州市社会组织管理办法
- 王夫之与谭嗣同认识论比较研究
- 基于细粒含量和塑性指数的砂黏混合物小应变动力特性研究
- 社区消防知识教育
- 护理实习生疑难病例报告撰写指南
- 卢梭公民教育理论
- 营养健康知识讲座
- 【公开课】三角形的边+课件+2025-2026学年人教版八年级数学上册
- 2025年广东省普通高中学业水平合格性考试模拟一历史试题(含答案)
- 【公开课】+分子动理论的初步知识(教学课件)2025-2026学年初中物理人教版(2024)九年级全一册
- 设备安全培训
- 2025至2030中国角膜塑形镜行业产业运行态势及投资规划深度研究报告
- 2023aki的预防诊断和管理
- 2025年4月自考03346项目管理试题
- 慢性肾衰竭患者心理的护理
- 艾梅乙反歧视培训课件
- 小学数学课堂教学实践与创新
- 2024年安徽外国语学院辅导员考试真题
评论
0/150
提交评论