- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[理学]数据结构chapter 9 排序
* * 归并排序示例 例:关键字序列为49,38,65,97,76,13,27,归并排序过程: 初始序列 一趟归并 二趟归并 三趟归并 38 49 65 97 76 13 27 38 49 65 97 76 13 27 38 49 65 97 76 13 27 49 38 65 76 13 97 27 * * 归并算法C描述 void Merge(RcdType SR[], RcdType TR[], int i, int m, int n) { //将有序序列SR[i..m]和SR[m+1..n]归并为有序序列TR[i..n] for(j=m+1,k=i;i=mj=n;++k) { if LQ(SR[i].key,SR[j].key) TR[k]=SR[i++]; else TR[k]=SR[j++]; } if (i=m) TR[k..n]=SR[i..m]; if (j=n) TR[k..n]=SR[j..n]; } i j SR TR * * 归并排序递归算法C描述 void MSort(RcdType SR[], RcdType TR[],int s, int t) { //将SR[s..t]归并排序为TR1[s..t] if (s==t) TR[s]=SR[s]; else { m = (s + t) / 2; //分为两个序列 MSort(SR,TR1,s,m); MSort(SR,TR1,m+1,t); Merge(TR1,TR,s,m,t); } } void MergeSort(SqList L) { MSort(L.r, L.r,1, L.length); } * * 5 基数排序 前面所述的各种排序方法实现主要通过关键字间的比较和移动记录操作。 基数排序是与前面所述各种排序方法完全不同的一种排序方法 基数排序:不需要移动关键字,也不需要进行关键字的比较,它是借助于多关键字排序思想对单逻辑关键字进行排序的方法。 * * 52张扑克牌的次序关系为: ?2?3……?A ?2?3……?A ?2?3……?A ?2?3……?A 每个牌有两个关键字: 花色( ???? ) 面值(23……A) 并且“花色”地位高于“面值” 多关键字排序举例 * * 两种不同的扑克牌排序方法 方法一 先将扑克牌按不同花色分为有次序的4堆,每一堆均有相同的花色; 然后分别对每一堆按“面值”大小整理有序 方法二: 先按“面值”分为13堆,然后将13张牌自小到大叠在一起, 再将整付牌按花色分为4堆,最后将4堆牌按花色大小次序合在一起。 这两种整理扑克牌的方法就是多关键字排序方法 * * 多关键字的排序 假设有n个记录的序列为:{R1,R2,…,Rn},且每个记录Ri含有d个关键字{Ki0,Ki1,Ki2,…,Kid-1},序列对关键字{K0,K1,K2,…,Kd-1},有序是指:对序列中任意两个记录Ri和Rj(1≤i<j≤n) 都满足下列有序关系: 其中K0是主关键字, K1是次关键字,Kd-1是最次关键字 * * 多关键字排序的方法 为实现多关键字排序,通常有两种方法: 最高位优先法 MSD (Most Significant Digit first) 最低位优先法 LSD (Least Significant Digit first) 需要说明的是:这两种方法只是约定了按什么样的“关键字次序”进行排序,未规定对每个关键字排序时所用的方法。 * * 多关键字排序的最高位优先法 先对主关键字K0进行排序,即将序列分为若干子序列,每个子序列的记录都有相同的K0 每个子序列再按关键字K1进行排序,分成若干更小的子序列,依次重复 最后按Kd-1进行排序,将所有子序列依次联接在一起成为一个有序序列 比如:扑克牌先按“花色”排序,然后对每种花色按照“面值”排序 按花色排序后得到四个子序列,四个子序列再按面值进行排序 * * 多关键字排序的最低位优先法 先对最次位关键字Kd-1进行排序 再对高一位的关键字Kd-2进行排序,依次重复 最后按K0进行排序,便成为一个有序序列 比如:扑克牌先按“面值”排序,然后对每种花色按照“花色”排序 在按面值排序的之后仍然是一个序列,比如:?2 ?2 ?2 ?2?3 ?3 ?3 ?3 然后再对整个序列按花色排序,且在按花色排序的时候必须是稳定排序 即排序后的结果应该为: ?2 ?3 ?2 ?3 ?2 ?3 ?2 ?3 因为在按面值排序后?2 在?3前面,在按照花色进行排序时,尽管?2 ?3的花色是相同的,排序后?2 也必须在?3前面,这样才是稳定排序 * * 高位优先法与低位优先法的区别 高位优先法需要按照关键字将输入序列分为子序列,而低位优先法
您可能关注的文档
最近下载
- 体例格式8:工学一体化课程《windows服务器基础配置与局域网组建》任务4学习任务考核方案.docx VIP
- 复盛ZW系列无油螺杆空压机样本.pdf VIP
- 第04章各种催化剂及其催化作用.ppt VIP
- 乙烯装置主要设备.doc VIP
- 第九版内科学课件消化系统消化性溃疡.pdf VIP
- 2000-2015年北京林业大学园林建筑设计考研真题.pdf VIP
- 发酵工程制药课件.ppt VIP
- 《规划作品》优教课件 (1).ppt VIP
- 体例格式8:工学一体化课程《windows服务器基础配置与局域网组建》任务5学习任务考核方案.docx VIP
- 第四单元阅读综合实践(素养进阶教学课件)语文统编版2024七年级上册.pptx VIP
文档评论(0)