版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重要物资采购合同
- 江西省万载县高中生物 专题2 细胞工程 2.2.2 动物细胞融合与单克隆抗体(练习课)教案 新人教版选修3
- 2024年三年级品社下册《浓浓乡土情》教案 山东版
- 高考化学 专题二 第8讲 有机物的结构、性质和应用教案(含解析)
- 2024秋九年级历史上册 第七单元 工业革命和工人运动的兴起 第20课 第一次工业革命教案 新人教版
- 2023一年级数学上册 二 比一比第1课时 比长短 比高矮教案 苏教版
- 2024年春九年级化学下册 第12单元 化学与生活 课题2 化学元素与人体健康教案 (新版)新人教版
- 文书模板-委托研发合同补充协议
- 年度部门评分表
- 混凝土浇筑课件
- GA 1808-2022军工单位反恐怖防范要求
- 网易公司战略分析报告书
- 2023年中国通用技术(集团)控股有限责任公司招聘笔试题库及答案解析
- GB/T 7409.1-2008同步电机励磁系统定义
- GB/T 34279-2017笼式足球场围网设施安全通用要求
- 四川省工伤保险待遇申请表
- 《火力发电工程建设预算编制与计算标准》使用指南
- 2023年注册物业管理师考试真题
- 运用PDCA提高患者身份识别正确率课件
- 生而为赢-新东方英语背诵美文30篇
- 居住外地离退休人员联系服务工作制度(试行)
评论
0/150
提交评论