- 28
- 0
- 约1.52万字
- 约 84页
- 2017-06-02 发布于河南
- 举报
数据结构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前面,这样才是稳定排序 * * 高位优先法与低位优先法的区别 高位优先法需要按照关键字将输入序列分为子序列,而低位优先法
您可能关注的文档
最近下载
- 工程施工机具安全管理制度.pptx
- 2020年《钢结构设计规范》GB50017..pdf VIP
- 2024-2025学年河南省南阳市唐河县九年级(上)期末英语试卷(含答案).pdf VIP
- 浙江省杭州2024-2025学年高一上学期1月期末考试政治试题(含答案).pdf VIP
- 膜分离工程超滤(UF)课件.pptx VIP
- 浙江省杭州学军中学2024-2025学年高一上学期期末考试历史试题(含答案).pdf VIP
- 河南省南阳市唐河县2022-2023学年九年级上学期期末英语试卷.pdf VIP
- 旋挖钻孔灌注桩施工方案.docx VIP
- 阿特拉斯•科普柯 冷冻式干燥机.pdf VIP
- 超滤膜技术介绍.pptx VIP
原创力文档

文档评论(0)