[ppt]归并排序.ppt
- 文档编号:30842936
- 上传时间:2024-01-31
- 格式:PPT
- 页数:24
- 大小:94.60KB
[ppt]归并排序.ppt
《[ppt]归并排序.ppt》由会员分享,可在线阅读,更多相关《[ppt]归并排序.ppt(24页珍藏版)》请在冰豆网上搜索。
归并排序,基本原理,通过对两个有序结点序列的合并来实现排序。
所谓归并是指将若干个已排好序的部分合并成一个有序的部分。
两路归并的基本思想,设有两个有序表A和B,对象个数分别为al和bl,变量i和j分别是两表的当前指针。
设表C是归并后的新有序表,变量k是它的当前指针。
i和j对A和B遍历时,依次将关键字小的对象放到C中,当A或B遍历结束时,将另一个表的剩余部分照抄到新表中。
两路归并的示例,25574837129286,25573748129286,25374857128692,12253748578692,归并算法Merge(rectyprR,rectypeR1,intlow,intmid,inthigh)inti,j,k;i=low;j=mid+1;k=low;while(i=mid),归并排序就是利用上述归并操作实现排序的。
其基本思想是:
将待排序列R0到Rn-1看成n个长度为1的有序子序列,把这些子序列两两归并,便得到high(n/2)个有序的子序列。
然后再把这high(n/2)个有序的子序列两两归并,如此反复,直到最后得到一个长度为n的有序序列。
上述每次的归并操作,都是将两个子序列归并为一个子序列,这就是“二路归并”,类似地还可以有“三路归并”或“多路归并”。
归并过程示例,(25)(57)(48)(37)(12)(92)(86),(2557)(3748)(1292)(86),(25374857)(128692),(12253748578692),一趟归并算法Mergepass(rectypeR,rectypeR1,intlength)inti,j;i=0;while(i+2*length-1n)MERGE(R,R1,i,i+length-1,i+2*length-1);i=i+2*length;if(i+length-1n-1)MERGE(R,R1,i,i+length-1,n-1);elsefor(j=i;jn;j+)R1j=Rj;,归并排序算法Mergesort(rectypeR)intlength=1;while(lengthn)Mergepass(R,R1,length);length=2*length;Mergepass(R1,R,length);length=2*length;,算法复杂性分析,归并排序是稳定的排序方法。
归并排序在第i趟归并后,有序子文件长度为2i,因此,因此,对于具有n个记录的序列来说,必须做high(log2n)趟归并,每趟归并所花的时间为O(n)。
所以,二路归并排序算法的时间复杂度为O(nlog2n),辅助数组所需的空间为O(n)。
基数排序,基本原理,采用“分配”和“收集”的办法,用对多关键字进行排序的思想实现对单关键字进行排序的方法。
下面先介绍多关键字排序,多关键字排序方法示例,如对扑克牌的排序每张扑克牌有两个“关键字”:
花色和面值它们之间有次序的优先。
对以上排序,可以先对花色排序,或先对面值排序。
多关键字有序的概念,考虑对象序列V0,V1,.,Vn-1,每个对象Vi含d个关键字(Ki1,Ki2,.,Kid)。
若对序列中的任意两个对象Vi和Vj都有(Ki1,Ki2,.,Kid)(Kj1,Kj2,.,Kjd)则称序列对关键字(Ki1,Ki2,.,Kid)有序,且K1称为最高位关键字,Kd称为最低位关键字。
多关键字排序,原理:
根据组成关键字的各位的值进行排序。
实现基数排序的两种方法:
1最高位优先(MSD)排序:
从关键字的高位到低位2最低位优先(LSD)排序:
从关键字的低位到高位MSD方法通常是一个递归的过程。
多关键字排序(续),LSD和MSD方法也可应用于对一个关键字进行的排序。
此时可将单关键字Ki看成是一个子关键字组:
(Ki1,Ki2,.,Kid)如对关键字取值范围为0到999的一组对象,可看成是(K1,K2,K3)的组合。
MSD方法按K1,K2,K3的顺序对所有对象排序;LSD方法按K3,K2,K1的顺序对所有对象排序。
链式的基数排序,基数排序是一种典型的LSD排序方法,它利用“分配”和“收集”两种运算对单关键字进行排序。
此时可将单关键字K看成是一个子关键字组:
(Ki1,Ki2,.,Kid)排序过程:
设关键字共有d位,让j=d,d-1,.,1,依次执行d次“分配”与“收集”。
179,208,306,93,859,984,55,9,271,33,B0.fB1.fB2.fB3.fB4.fB5.fB6.fB7.fB8.fB9.f,B0.eB1.eB2.eB3.eB4.eB5.eB6.eB7.eB8.eB9.e,271,93,33,984,55,306,208,179,859,9,271,93,33,984,55,306,208,179,859,9,B0.fB1.fB2.fB3.fB4.fB5.fB6.fB7.fB8.fB9.f,B0.eB1.eB2.eB3.eB4.eB5.eB6.eB7.eB8.eB9.e,33,984,306,208,9,55,859,271,179,93,306,208,9,33,55,859,271,179,984,93,B0.fB1.fB2.fB3.fB4.fB5.fB6.fB7.fB8.fB9.f,B0.eB1.eB2.eB3.eB4.eB5.eB6.eB7.eB8.eB9.e,179,306,984,859,9,33,55,93,208,271,9,33,55,93,179,208,271,306,859,984,分配排序算法typedefstructintkeyd;intnext;datatypeother;rectype;rectypeRn;typedefstructintf,e;queue;queueBm;,for(j=d-1;j=0;j-)for(i=0;im;i+)Bi.f=-1;Bi.e=-1;while(p!
=-1)k=Rp.keyj;if(Bk.f=-1)Bk.f=p;elseRBk.e.next=p;Bk.e=p;p=Rp.next;i=0;while(Bi.f=-1)i+;t=Bi.e;p=Bi.f;while(im-1)i+;if(Bi.f!
=-1)Rt.next=Bi.f;t=Bi.e;Rt.next=-1;returnp;,intRADIXSORT(rectypeR)inti,j,k,t,p;for(i=0;in-1;i+)Ri.next=i+1;Rn-1.next=-1;p=0;,内部排序方法的比较和选择,选取排序方法时需要考虑的因素有:
待排序的记录数目记录本身信息量的大小关键字的结构及其分布情况对排序稳定性的要求语言工具的条件、辅助空间的大小,外部排序简介,如果待排序的记录数很大,无法将所有记录都调入内存,只能将它们存放在外存上,我们称这时的排序为外部排序。
外部排序的实现,主要是依靠数据的内外存交换和“内部归并”。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ppt 归并 排序