第八章排序优秀PPT.ppt
《第八章排序优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第八章排序优秀PPT.ppt(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章排序第一页,本课件共有105页第第8章章 排排 序序学习目的要求学习目的要求:1.掌握排序的概念和排序的种类。掌握排序的概念和排序的种类。2.熟练掌握五类基本排序熟练掌握五类基本排序:插入排序、交换排插入排序、交换排序、选择排序、归并排序和基数排序的算法序、选择排序、归并排序和基数排序的算法思想、算法实现和性能分析。思想、算法实现和性能分析。第二页,本课件共有105页8.1 概述概述8.2 插入排序插入排序8.3 交换排序交换排序8.4 选择排序选择排序8.5 归并排序归并排序8.6 基数排序基数排序8.7 各种排序方法的综合比较各种排序方法的综合比较第三页,本课件共有105页8.1 概
2、概 述述一、排序的定义一、排序的定义二、内部排序和外部排序二、内部排序和外部排序三、内部排序方法的分类三、内部排序方法的分类第四页,本课件共有105页一、什么是排序?一、什么是排序?排序是计算机内经常进行的一种操作,其目的是将一组排序是计算机内经常进行的一种操作,其目的是将一组“无序无序”的记录序列调整为的记录序列调整为“有序有序”的记录序列。的记录序列。例如:例如:将下列关键字序列将下列关键字序列52,49,80,36,14,58,61,23,97,75调整为调整为14,23,36,49,52,58,61,75,80,97第五页,本课件共有105页【排序算法的稳定性】:【排序算法的稳定性】:
3、如果待排序的序列中,存在多个具有相同关键字如果待排序的序列中,存在多个具有相同关键字的记录,若经过排序这些记录的相对次序保持不变,的记录,若经过排序这些记录的相对次序保持不变,则称这种排序算法是则称这种排序算法是稳定稳定的;经过排序这些记录的相的;经过排序这些记录的相对次序发生了改变,则称这种排序算法是对次序发生了改变,则称这种排序算法是不稳定不稳定的。的。第七页,本课件共有105页例如:例如:排序前排序前(56,34,47,23,66,18,82,47)若排序后得到结果若排序后得到结果 (18,23,34,47,47,56,66,82)则称该排序方法是则称该排序方法是稳定稳定的的;若排序后得
4、到结果若排序后得到结果 (18,23,34,47,47,56,66,82)则称该排序方法是则称该排序方法是不稳定不稳定的。的。第八页,本课件共有105页二、内部排序和外部排序二、内部排序和外部排序 待排序记录存放在计算机随机存储器中进行的待排序记录存放在计算机随机存储器中进行的排序过程,为排序过程,为内部排序;内部排序;若待排序记录的数量很大,以至内存一次不能容纳若待排序记录的数量很大,以至内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过全部记录,在排序过程中尚需对外存进行访问的排序过程,为程,为外部排序外部排序。第九页,本课件共有105页三、内部排序的方法三、内部排序的方法内
5、部排序的过程是一个逐步扩大记录内部排序的过程是一个逐步扩大记录的有序序列长度的过程。的有序序列长度的过程。经过一趟排序经过一趟排序有序序列区有序序列区无无 序序 序序 列列 区区有序序列区有序序列区无无 序序 序序 列列 区区第十页,本课件共有105页在排序过程中的基本操作:在排序过程中的基本操作:比较两个关键字的大小比较两个关键字的大小将记录从一个位置移动到另一个位置将记录从一个位置移动到另一个位置 前一种操作对大多数排序方法来说是必要的,前一种操作对大多数排序方法来说是必要的,而后一种操作可通过改变记录的存储方式来予以避而后一种操作可通过改变记录的存储方式来予以避免。免。第十二页,本课件共
6、有105页 8.2 插插 入入 排排 序序将无序子序列中的将无序子序列中的一个或几个记录一个或几个记录“插入插入”到有到有序序列中,从而增加记录的有序子序列的长度。序序列中,从而增加记录的有序子序列的长度。第十四页,本课件共有105页【一趟直接插入排序的基本思想】:【一趟直接插入排序的基本思想】:把把 n 个记录的序列划分为个记录的序列划分为已排序部分已排序部分和和未排序未排序部分部分,即在涉及第,即在涉及第 i 个记录个记录 Ri 时时,(R1,.,Ri-1)是)是已排好的有序部分,(已排好的有序部分,(Ri,Ri+1,.,Rn)属于未排)属于未排序部分。序部分。找出找出 Ri 在此有序序列
7、中应插入的位置,将在此有序序列中应插入的位置,将 Ri插入插入。原位置上的记录至。原位置上的记录至 Ri-1 均顺序后移一位。均顺序后移一位。第十五页,本课件共有105页有序序列有序序列R1.i-1Ri无序序列无序序列 Ri.n有序序列有序序列R1.i无序序列无序序列 Ri+1.n图示图示第十六页,本课件共有105页直接插入排序直接插入排序(基于顺序查找)(基于顺序查找)不同的具体实现方法导致不同的算法描述不同的具体实现方法导致不同的算法描述折半插入排序折半插入排序(基于折半查找)(基于折半查找)希尔排序希尔排序(基于逐趟缩小增量)(基于逐趟缩小增量)第十七页,本课件共有105页一、直接插入排
8、序一、直接插入排序利用利用“顺序查找顺序查找”实现实现“在在R1.i-1中中查找查找Ri的插的插入位置入位置”对于直接插入排序:其对于直接插入排序:其时间复杂度时间复杂度为为O(n2 2)适用于当适用于当待排序记录的数量很小待排序记录的数量很小时时 第十八页,本课件共有105页【直接插入排序示例】【直接插入排序示例】初始状态初始状态 18 12 10 12 30 16 第第1趟(趟(i=2)(12)12 18 10 12 30 16 第第2趟(趟(i=3)(10)10 12 18 12 30 16 第第3趟(趟(i=4)(12)10 12 12 18 30 16 第第4趟(趟(i=5)(30)
9、10 12 12 18 30 16 第第5趟(趟(i=6)(16)10 12 12 16 18 30 待排序记录序列为待排序记录序列为(18(18,1212,1010,1212,3030,1616)直接插入排序每一趟执行后的序列状态直接插入排序每一趟执行后的序列状态:监视哨监视哨第十九页,本课件共有105页1已知序列已知序列72,83,99,65,10,36,7,9,请,请给出采用插入排序法对该序列作升序排序时的每一趟给出采用插入排序法对该序列作升序排序时的每一趟的结果。的结果。【练习】【练习】第二十页,本课件共有105页1已知序列已知序列72,83,99,65,10,36,7,9,请给,请给
10、出采用插入排序法对该序列作升序排序时的每一趟的结出采用插入排序法对该序列作升序排序时的每一趟的结果。果。初始:初始:(72),),83,99,65,10,36,7,9第第1趟:(趟:(72,83),),99,65,10,36,7,9第第2趟:(趟:(72,83,99),),65,10,36,7,9第第3趟:(趟:(65,72,83,99),),10,36,7,9第第4趟:(趟:(10,65,72,83,99),),36,7,9第第5趟:(趟:(10,36,65,72,83,99),),7,9第第6趟:(趟:(7,10,36,65,72,83,99),),9第第7趟:(趟:(7,9,10,36,
11、65,72,83,99)【练习答案】【练习答案】第二十一页,本课件共有105页 因为因为 R1.i-1 是一个按关键字有序的有序序列,则是一个按关键字有序的有序序列,则可以可以利用折半查找实现利用折半查找实现“在在R1.i-1中中查找查找Ri的的插插入位置入位置”,如此实现的插入排序为,如此实现的插入排序为折半插入折半插入排序。排序。二、折半插入排序二、折半插入排序第二十二页,本课件共有105页14 36 49 52 80 58 61 23 97 75ilowhighmmlowlowmhigh例如例如:插入位置L.r【折半插入排序折半插入排序示例】示例】第二十三页,本课件共有105页 对于折半
12、插入排序对于折半插入排序,仅减少了关键字比较的次数,仅减少了关键字比较的次数,记录的移动次数不变,其记录的移动次数不变,其时间复杂度时间复杂度为为O(nO(n2 2);折半插入排序适用于当折半插入排序适用于当待排序记录的数量很大待排序记录的数量很大时,时,可大幅度降低关键字的比较次数。可大幅度降低关键字的比较次数。第二十四页,本课件共有105页三三 2-路插入排序路插入排序2-路插入排序是对折半插入排序的改进算法,它是利路插入排序是对折半插入排序的改进算法,它是利用增加辅助空间来减少排序过程中移动记录的次数,即用增加辅助空间来减少排序过程中移动记录的次数,即“以空间换时间以空间换时间”。第二十
13、五页,本课件共有105页具体做法是具体做法是:建立一个和待排序序列建立一个和待排序序列rn同类型的数组同类型的数组dn作为辅助空间。作为辅助空间。先将先将r0的值赋给的值赋给d0,将,将d0看成是处于最后看成是处于最后有序序列中处于中间位置的记录,有序序列中处于中间位置的记录,再从再从r1开始依次将记录插入到开始依次将记录插入到d0之前或之后的有序之前或之后的有序序列中。序列中。将数组将数组d看成是一循环向量(既首尾相连的环状空间),看成是一循环向量(既首尾相连的环状空间),并设置两个指针并设置两个指针first和和final分别指向有序序列的第一条和最后分别指向有序序列的第一条和最后一条记录
14、,将当前待插入记录一条记录,将当前待插入记录ri与与d0比较,若比较,若rid0,则将其插入,则将其插入d0之前的有序序列中,反之,之前的有序序列中,反之,则将其插入到则将其插入到d0之后的有序序列中。之后的有序序列中。当所有的记录都插入完成后,从指针当所有的记录都插入完成后,从指针first所指向的记录所指向的记录开始一直读取到指针开始一直读取到指针final所指向的记录,所得到的序列就是所指向的记录,所得到的序列就是排序后的有序序列。排序后的有序序列。第二十六页,本课件共有105页三三 2-路插入排序路插入排序42 36 56 78 67 11 27 26i=142i=24236i=342
15、5636i=442567836i=54256677836i=6425667781136i=742566778112736i=84256677811273636firstfinalfirstfinalfirstfinalfirstfinalfirstfinalfirstfinalfirstfinalfirstfinal第二十七页,本课件共有105页 四、希尔排序四、希尔排序(缩小增量排序缩小增量排序)基本思想基本思想:对待排记录序列先作:对待排记录序列先作“宏观宏观”调整,再调整,再作作“微观微观”调整。调整。所谓所谓“宏观宏观”调整,指的是,调整,指的是,“跳跃式跳跃式”的插入排的插入排序。序
16、。即先将整个待排记录序列分割成若干子序列分别即先将整个待排记录序列分割成若干子序列分别进行直接插入排序进行直接插入排序,待整个序列中的记录,待整个序列中的记录“基本有序基本有序”时,再对全体记录进行一次直接插入排序。时,再对全体记录进行一次直接插入排序。第二十八页,本课件共有105页 将记录序列分成若干子序列,分别对每个将记录序列分成若干子序列,分别对每个子序列进行插入排序。子序列进行插入排序。后面实例,后面实例,d d 称为增量,它的值在排序过程中称为增量,它的值在排序过程中从大到小从大到小逐渐缩小,直至最后一趟排序逐渐缩小,直至最后一趟排序减为减为 1 1。增量增量d d的取值的取值:d:
17、d0 0=n/2n/2,d,d1 1=d d0 0/2/2,d,di i=d di-1i-1/2/2(除后的结果除后的结果都都应应”下取整下取整”)”)具体做法具体做法:第二十九页,本课件共有105页例:初始关键字例:初始关键字 49 38 65 97 76 13 27 49 55 04 二趟排序结果二趟排序结果 04 27 13 49 38 55 49 65 97 76设增量设增量 d=5设增量设增量 d=2设增量设增量 d=1一趟排序结果一趟排序结果 13 27 49 55 04 49 38 65 97 76 三趟排序结果三趟排序结果 04 13 27 38 49 49 55 65 76
18、97 49 13 38 27 65 49 97 55 76 0413 49 04 38 97 27 55 49 65 76 第三十页,本课件共有105页例如:例如:16 25 12 30 47 11 23 36 9 18 31 第一趟希尔排序,设增量第一趟希尔排序,设增量 d=511 23 12 9 18 16 25 36 30 47 31 第二趟希尔排序,设增量第二趟希尔排序,设增量 d=39 18 12 11 23 16 25 31 30 47 36第三趟希尔排序,设增量第三趟希尔排序,设增量 d=1 9 11 12 16 18 23 25 30 31 36 47 第三十一页,本课件共有1
19、05页 从上述排序过程可见,希尔排序中子序列的构成不是简从上述排序过程可见,希尔排序中子序列的构成不是简单地单地“逐段分割逐段分割”,而是,而是将相隔某个将相隔某个“增量增量”的记录组成一的记录组成一个子序列个子序列。关键字较小的记录不是一步一步地往前挪动,而。关键字较小的记录不是一步一步地往前挪动,而是是“跳跃式跳跃式”地往前移,从而使得在进行最后一躺增量为地往前移,从而使得在进行最后一躺增量为1的插入排序时,序列已基本有序,只要作记录的少量比较和的插入排序时,序列已基本有序,只要作记录的少量比较和移动即可完成排序。移动即可完成排序。因而因而希尔排序的时间复杂度比直接插入排序希尔排序的时间复
20、杂度比直接插入排序低低。它的时间是所取它的时间是所取“增量增量”序列的函数。序列的函数。第三十二页,本课件共有105页 已知序列(已知序列(10,16,4,3,6,12,1,9,15,8),请给出采用希尔排序法对该序列作升序排),请给出采用希尔排序法对该序列作升序排序时的每一趟的结果。序时的每一趟的结果。练习练习第三十三页,本课件共有105页 已知序列(已知序列(10,16,4,3,6,12,1,9,15,8),请给出采用希尔排序法对该序列作升序排),请给出采用希尔排序法对该序列作升序排序时的每一趟的结果。序时的每一趟的结果。初始:初始:10,16,4,3,6,12,1,9,15,8d=5第第
21、1趟:趟:10,1,4,3,6,12,16,9,15,8d=2第第2趟:趟:4,1,6,3,10,8,15,9,16,12d=1第第3趟:趟:1,3,4,6,8,9,10,12,15,16【练习答案】【练习答案】第三十四页,本课件共有105页8.3 选选 择择 排排 序序从记录的无序子序列中从记录的无序子序列中“选择选择”关键字最小或关键字最小或最大最大的记录,并将它的记录,并将它加入到有序子序列加入到有序子序列中,以此方中,以此方法增加记录的有序子序列的长度。法增加记录的有序子序列的长度。简简 单单 选选 择择 排排 序序堆堆 排排 序序第三十五页,本课件共有105页一、简单选择排序一、简单
22、选择排序【基本思想】【基本思想】:一趟简单选择排序的操作为:一趟简单选择排序的操作为:通过通过n-in-i次关键字间的比较,从次关键字间的比较,从n-i+1n-i+1个记录中选个记录中选出出关键字最小关键字最小的记录,并和第的记录,并和第i i(1in)1in)个记录交换个记录交换之。之。简单选择排序时间复杂度为简单选择排序时间复杂度为O(nO(n2 2)第三十六页,本课件共有105页假设排序过程中,待排记录序列的状态为:假设排序过程中,待排记录序列的状态为:有序序列有序序列R1.i-1无序序列无序序列 Ri.n 第第 i 趟趟简单选择排序简单选择排序从中选出从中选出关键字最小的记录关键字最小
23、的记录有序序列有序序列R1.i无序序列无序序列 Ri+1.n第三十七页,本课件共有105页【简单选择排序【简单选择排序】-选择最小的浮上来选择最小的浮上来初始状态初始状态 2 7 2 4 3 1 第第1趟(趟(i=1)1 7 2 4 3 2第第2趟(趟(i=2)1 2 7 4 3 2 第第3趟(趟(i=3)1 2 2 4 3 7第第4趟(趟(i=4)1 2 2 3 4 7 第第5趟(趟(i=5)1 2 2 3 4 7待排序记录序列的关键字序列为(待排序记录序列的关键字序列为(2 2,7 7,2 2,4 4,3 3,1 1)简单选择排序每一趟执行后的序列状态:简单选择排序每一趟执行后的序列状态:
24、第三十八页,本课件共有105页练习练习 已知序列已知序列17,18,55,40,7,32,73,65,89,请给出采用简单选择排序法对该序列作升序排列时的每一请给出采用简单选择排序法对该序列作升序排列时的每一趟的结果趟的结果第三十九页,本课件共有105页 已知序列已知序列17,18,55,40,7,32,73,65,89,请给出采用简单选择排序法对该序列作升序排,请给出采用简单选择排序法对该序列作升序排列时的每一趟的结果列时的每一趟的结果初始:初始:17,18,55,40,7,32,73,65,89第第1趟:趟:7,18,55,40,17,32,73,65,89第第2趟:趟:7,17,55,4
25、0,18,32,73,65,89第第3趟:趟:7,17,18,40,55,32,73,65,89第第4趟:趟:7,17,18,32,55,40,73,65,89第第5趟:趟:7,17,18,32,40,55,73,65,89第第6趟:趟:7,17,18,32,40,55,73,65,89第第7趟:趟:7,17,18,32,40,55,65,73,89第第8趟:趟:7,17,18,32,40,55,65,73,89【练习答案】【练习答案】第四十页,本课件共有105页二、堆排序二、堆排序堆是满足下列性质的数列堆是满足下列性质的数列r1,r2,,rn:或或堆的定义堆的定义:(小顶堆小顶堆)(大顶堆大
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八 排序 优秀 PPT
限制150内