牛小飞《数据结构》7.3归并排序和快速排序.ppt





《牛小飞《数据结构》7.3归并排序和快速排序.ppt》由会员分享,可在线阅读,更多相关《牛小飞《数据结构》7.3归并排序和快速排序.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、归并排序和交换类排序归并排序和交换类排序起泡排序起泡排序快速排序快速排序7.7归并排序归并排序7.6小结和作业小结和作业交换类排序交换类排序归并排序归并排序归并排序的过程基于下列基本思想进行:归并排序的过程基于下列基本思想进行:将两个或两个以上的有序子序列“归并”为一个有序序列。归并排序归并排序归并排序中的基本操作是归并排序中的基本操作是合并合并两个已排序的表。其中的两个已排序的表。其中的合并算法是取两个输入数组合并算法是取两个输入数组A和和B,一个输出数组,一个输出数组C,以,以及及3个计数器个计数器Actr,Bctr,Cctr。1132426Actr2152738BctrCctr12Act
2、rCctrCctrCctrCctr CctrCctrCctrActr ActrBctr Bctr Bctr131524262738归并排序归并排序在内部排序中,通常采用的是在内部排序中,通常采用的是2-2-路归并排序路归并排序。即:。即:将两个位置相邻的记录有序子序列将两个位置相邻的记录有序子序列有序子序列有序子序列 Rl.m归并为一个记录的有序序列归并为一个记录的有序序列。有有 序序 序序 列列 Tl.n这个操作对顺序表而言,是轻而易举的。这个操作对顺序表而言,是轻而易举的。有序子序列有序子序列 Rm+1.n归并两个有序序列算法归并两个有序序列算法public static AnyType
3、extends Comparable void Merge(AnyType a,AnyType tmpArray,int leftPos,int rightPos,int rightEnd)/将有序序列将有序序列 aleftPos.rightPos-1 和和 arightPos.rightEnd归并为有序序列归并为有序序列/tmpArrayleftPos.rightEnd int leftEnd=rightPos-1;/第一个有序序列的最后元素位置第一个有序序列的最后元素位置 int tmpPos=leftPos;/归并后序列的下标归并后序列的下标 int numElements=rightE
4、nd-leftPos+1;/共有的数据元素个数共有的数据元素个数 while(leftPos=leftEnd&rightPos=rightEnd)if(aleftPpareTo(arightPos)=0)tmpArraytmpPos+=aleftPos+;else tmpArraytmpPos+=arightPos+;归并两个有序序列算法归并两个有序序列算法public static AnyType extends Comparable void Merge(AnyType a,AnyType tmpArray,int leftPos,int rightPos,int rightEnd)whi
5、le(leftPos=leftEnd)/将剩余的将剩余的aleftPos.leftEnd复制到复制到 /tmpArray中中 tmpArraytmpPos+=aleftPos+;while(rightPos=rightEnd)/将剩余的将剩余的arightPos.rightEnd复制到复制到 /tmpArray中中 tmpArraytmpPos+=arightPos+;/将排序后的有序序列复制到将排序后的有序序列复制到a中中 for(int i=0;inumElements;i+,rightEnd-)arightEnd=tmpArrayrightEnd;归并排序算法描述归并排序算法描述如果如果
6、n=1,只有一个元素需要排序;,只有一个元素需要排序;否则,递归地将前半部分数据和后半部分数据各否则,递归地将前半部分数据和后半部分数据各自归并排序,得到排序后的两部分数据,然后使自归并排序,得到排序后的两部分数据,然后使用合并算法将这两部分合并到一起。用合并算法将这两部分合并到一起。该算法是经典的该算法是经典的分治分治(divide-and-conquer)策略策略,它将问题分它将问题分(divide)成一些小的问题然后递归求成一些小的问题然后递归求解,而治解,而治(conquer)阶段则将分的阶段结果修补阶段则将分的阶段结果修补在一起。在一起。归并排序算法演示归并排序算法演示52,23,8
7、0,36,68,14 (s=0,t=5)52,23,80 36,68,14 52,2380 52 23,52 23,52,8036,6814366836,6814,36,68 14,23,36,52,68,80 23归并排序算法归并排序算法public static AnyType extends Comparable void MSort(AnyType a,AnyType b,int left,int right)/归并排序归并排序 if(left=right)bleft=aleft;if(leftright)int center=(left+right)/2;MSort(a,b,left
8、,center);MSort(a,b,center+1,right);Merge(a,b,left,center+1,right);归并排序算法归并排序算法public static AnyType extends Comparable void MergeSort(AnyType a)AnyType tmpArray=(AnyType )new Comparablea.length;MSort(a,tmpArray,0,a.length-1);归并排序算法性能分析归并排序算法性能分析对 n 个记录进行归并排序的时间复杂度为(nlogn)。因为:。因为:每一趟归并的时间复杂度为 O(n),总共
9、需进行 log2n 趟。需要的辅助存储空间为O(n)稳定的排序交换类排序交换类排序交换排序的基本思想:交换排序的基本思想:依次两两比较相邻关键字,并交换不满依次两两比较相邻关键字,并交换不满足排序要求的关键字,直至全部有序。足排序要求的关键字,直至全部有序。主要应用:主要应用:1)冒(起)泡排序)冒(起)泡排序 2)快速排序)快速排序 起泡排序起泡排序假设在排序过程中,记录序列假设在排序过程中,记录序列R1.nR1.n的状态为:的状态为:第第 i 趟起泡排序趟起泡排序无序序列无序序列R1.n-i+1有序序列有序序列 Rn-i+2.nn-i+1无序序列无序序列R1.n-i有序序列有序序列 Rn-
10、i+1.n比较相邻记录,将关键字比较相邻记录,将关键字最大的记录最大的记录交换到交换到 n-i+1 的位置上的位置上起泡排序起泡排序306597 76132738 0 1 2 3 4 5 6 7494938jj+19776971397279730jj+1jj+1jj+1jj+1jj+1jj+1第一趟起泡排序过程第一趟起泡排序过程976576 13273049 0 1 2 3 4 5 6 738第一趟起泡排序后的结果第一趟起泡排序后的结果起泡排序起泡排序976576 13273049 0 1 2 3 4 5 6 738976576 13273049 0 1 2 3 4 5 6 738137627
11、76307676第二趟第二趟976513 27303049 0 1 2 3 4 5 6 738136565307676第三趟第三趟276565971327 30303049 0 1 2 3 4 5 6 738494949307676第四趟第四趟6565134927起泡排序起泡排序971327 30303049 0 1 2 3 4 5 6 738494949307676第四趟第四趟656513492797273013 0 1 2 3 4 5 6 7384976第五趟第五趟651338273838303897303027 0 1 2 3 4 5 6 7134976第六趟第六趟65383830起泡排
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 牛小飞 7.3 归并 排序 快速

限制150内