《数据结构》 第十章下)
《数据结构》 第十章(下)
数据结构 105归并排序 归并—将两个或两个以上的有序表组合成一个新的 有序表 多路归并排序:将三个或三个以上有序子区间合并成 个有序子区间的排序,称为多路归并排序。常见的 有三路归并排序、四路归并排序等,具体实现的方法 与二路归并排序类似 2-路归并排序 排序过程:设初始序列含有n个记录,则可看成n个有 序的子序列,每个子序列长度为1 两两合并,得到n/2+1个长度为2或1的有序子序列。 再两两合并,…如此重复,直至得到一个长度为n 的有序序列为止 算法参见P283,P284
数据结构 tjm 10.5 归并排序 归并——将两个或两个以上的有序表组合成一个新的 有序表。 多路归并排序:将三个或三个以上有序子区间合并成 一个有序子区间的排序,称为多路归并排序。常见的 有三路归并排序、四路归并排序等,具体实现的方法 与二路归并排序类似。 算法参见P283, P284 2-路归并排序 排序过程:设初始序列含有n个记录,则可看成n个有 序的子序列,每个子序列长度为1。 两两合并,得到n/2+1个长度为2或1的有序子序列。 再两两合并,……如此重复,直至得到一个长度为n 的有序序列为止
数据结构 例: 初始关键字:4938165197[76|3[27 趙归并后:384916597][376[27] 二趟归并后:|38496597[132776 三趟归并后:13273849657697 算法评价 时间复杂度:T(n)=0nlog2n) 空间复杂度:S(m)=O(m)
数据结构 tjm 例: 初始关键字: [49] [38] [65] [97] [76] [13] [27] 一趟归并后: [38 49] [65 97] [13 76] [27] 二趟归并后: [38 49 65 97] [13 27 76] 三趟归并后: [13 27 38 49 65 76 97] 算法评价 时间复杂度:T(n)=O(nlog2n) 空间复杂度:S(n)=O(n)
数据结构 10.6基数排序 10.61多关键排序 多关键字排序定义: 在实际应用中,有时的排序会需要按几种不同排序码 来排序。 对于多关键字排序(假设有d个关键字),则可以按 第1、2、…、d个关键字的顺序排序,也可以按第d、 d-1、d-2、…、2、1个关键字的顺序排序。 例:对52张扑克牌按以下次序排序: 23<A<◆2<◆3<<◆A< v2<3<<A<命2<命3<,<命A 两个关键字:花色(晶<◆<<确) 面值(2<3<…<A) 并且“花色”地位高于“面值
数据结构 tjm 例: 对52张扑克牌按以下次序排序: 2<3<……<A<2<3<……<A< 2<3<……<A<2<3<……<A 两个关键字:花色(<<< ) 面值(2<3<……<A) 并且“花色”地位高于“面值”。 10.6 基数排序 10.6.1 多关键字排序 多关键字排序定义: 在实际应用中,有时的排序会需要按几种不同排序码 来排序。 对于多关键字排序(假设有d个关键字),则可以按 第1、2、…、d个关键字的顺序排序,也可以按第d、 d-1、d-2、…、2、1个关键字的顺序排序
数据结构 多关键字排序方法 最高位优先法(MSD):先对最高位关键字k1(如花色) 排序,将序列分成若干子序列,每个子序列有相同的k1 值;然后让每个子序列对次关键字k2(如面值)排序, 又分成若干更小的子序列;依次重复,直至就每个子序 列对最低位关键字k排序;最后将所有子序列依次连接 在一起成为一个有序序列。 最低位优先法LSD):从最低位关键字k起进行排序, 然后再对高一位的关键字排序 依次重复,直至对 最高位关键字k排序后,便成为一个有序序列 MSD与LSD不同特点: 按MSD排序,必须将序列逐层分割成若干子序列, 然后对各子序列分别排序。 按LSD排序,不必分成子序列,对每个关键字都是 整个序列参加排序;并且可不通过关键字比较,而 通过若干次分配与收集实现排序
数据结构 tjm 最高位优先法(MSD):先对最高位关键字k1(如花色) 排序,将序列分成若干子序列,每个子序列有相同的k1 值;然后让每个子序列对次关键字k2(如面值)排序, 又分成若干更小的子序列;依次重复,直至就每个子序 列对最低位关键字kd排序;最后将所有子序列依次连接 在一起成为一个有序序列。 最低位优先法(LSD):从最低位关键字kd起进行排序, 然后再对高一位的关键字排序,……依次重复,直至对 最高位关键字k1排序后,便成为一个有序序列。 MSD与LSD不同特点: 按MSD排序,必须将序列逐层分割成若干子序列, 然后对各子序列分别排序。 按LSD排序,不必分成子序列,对每个关键字都是 整个序列参加排序;并且可不通过关键字比较,而 通过若干次分配与收集实现排序。 多关键字排序方法