第10章-内部排序-数据结构-(第二版)-教学课件.ppt





《第10章-内部排序-数据结构-(第二版)-教学课件.ppt》由会员分享,可在线阅读,更多相关《第10章-内部排序-数据结构-(第二版)-教学课件.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十章第十章 内部排序内部排序 基本概念基本概念 插入排序插入排序 快速排序快速排序 选择排序选择排序 基数排序基数排序10.110.1 基本概念基本概念 设设设设含含含含有有有有n n个个个个记记记记录录录录的的的的文文文文件件件件RR1 1,R,R2 2,.,R,.,Rn n,其其其其相相相相应应应应的的的的关关关关键键键键字字字字为为为为KK1 1,K,K2 2,.,K,.,Kn n,将将将将记记记记录录录录按按按按关关关关键键键键字字字字值值值值非非非非递递递递减减减减(或非递增或非递增或非递增或非递增)顺序排列的过程,称为顺序排列的过程,称为顺序排列的过程,称为顺序排列的过程,称为排
2、序排序。对对对对所所所所有有有有的的的的KKi i=K=Kj j(ij),(ij),若若若若排排排排序序序序前前前前R Ri i领领领领先先先先于于于于R Rj j,排排排排序序序序后后后后R Ri i仍仍仍仍领领领领先先先先于于于于R Rj j,则则则则称称称称该该该该排排排排序序序序方方方方法法法法是是是是稳稳定定的的,反反反反之之之之,称为称为称为称为不稳定不稳定 的。的。的。的。稳稳稳稳定定定定性性性性是是是是对对对对序序序序列列列列中中中中的的的的两两两两个个个个相相相相同同同同的的的的关关关关键键键键字字字字在在在在初初初初始始始始序序序序列列列列和和和和最最最最终终终终有有有有序
3、序序序序序序序列列列列中中中中相相相相对对对对位位位位置置置置(即即即即领领领领先先先先关关关关系系系系)是是是是否否否否变化。变化。变化。变化。10.110.1 基本概念基本概念 内内部部排排序序:待待排排序序文文件件的的全全部部记记录录存存放放在在内内存存进行的排序,称为内部排序。进行的排序,称为内部排序。外外部部排排序序:排排序序过过程程中中需需要要进进行行内内外外存存数数据据交交换的排序,称为外部排序。换的排序,称为外部排序。10.110.1 基本概念基本概念内排序分类内排序分类内排序分类内排序分类 按排序过程依据的原则分为:插入排序按排序过程依据的原则分为:插入排序按排序过程依据的原
4、则分为:插入排序按排序过程依据的原则分为:插入排序 交换排序交换排序交换排序交换排序 选择排序选择排序选择排序选择排序 归并排序归并排序归并排序归并排序 计数排序计数排序计数排序计数排序 按排序过程所需的工作量分:简单排序按排序过程所需的工作量分:简单排序按排序过程所需的工作量分:简单排序按排序过程所需的工作量分:简单排序 O(n O(n2 2)先进排序先进排序先进排序先进排序 O(nlog O(nlogn n)基数排序基数排序基数排序基数排序 O(d O(dn)n)10.2 插入排序插入排序 直接插入排序算法直接插入排序算法 PROC strainsort(VAR r:);FOR i:=2
5、TO n DO r0:=ri;j:=i-1;r1ri-1为有序子文件为有序子文件 WHILE r0.keyrj.key DO rj+1:=rj;j:=j-1;确定插入位置并移动确定插入位置并移动 rj+1:=r0 ENDP;strainsort10.2 插入排序插入排序 算法分析算法分析 空空间间上上,只只只只需需需需i i,j j两两两两个个个个整整整整型型型型变变变变量量量量和和和和一一一一个个个个记记记记录录录录的的的的辅辅辅辅助助助助空空空空间间间间r0,r0,r0r0作作作作为为为为“监监监监视视视视哨哨哨哨”,控控控控制制制制待待待待插插插插入入入入元元元元素素素素相相相相对对对对
6、于于于于有有有有序序序序子子子子文文文文件件件件为为为为最最最最小小小小时时时时WHILEWHILE循环的结束,同时也用于暂存待插入元素。循环的结束,同时也用于暂存待插入元素。循环的结束,同时也用于暂存待插入元素。循环的结束,同时也用于暂存待插入元素。时间上时间上,只包含比较关键字和移动记录两种操作。,只包含比较关键字和移动记录两种操作。,只包含比较关键字和移动记录两种操作。,只包含比较关键字和移动记录两种操作。比较次数比较次数比较次数比较次数:1/.1/.当待初始文件按关键字递增有序当待初始文件按关键字递增有序当待初始文件按关键字递增有序当待初始文件按关键字递增有序(正序正序正序正序)时:时
7、:时:时:a.a.对每个记录只进行一次比较,整个排序过程共对每个记录只进行一次比较,整个排序过程共对每个记录只进行一次比较,整个排序过程共对每个记录只进行一次比较,整个排序过程共 n n进行了进行了进行了进行了1=n-11=n-1次比较次比较次比较次比较(最少最少最少最少);i=2 i=2 b.b.每每每每个个个个记记记记录录录录都都都都要要要要进进进进行行行行riri移移移移到到到到r0r0和和和和r0r0移移移移到到到到rj+1rj+1两两两两次次次次移移移移动动动动,因此共移动因此共移动因此共移动因此共移动2(n-1)2(n-1)次次次次(最少最少最少最少)。10.2 插入排序插入排序
8、2/.2/.当待排序文件按关键字非递增有序当待排序文件按关键字非递增有序当待排序文件按关键字非递增有序当待排序文件按关键字非递增有序(逆序逆序逆序逆序)时时时时 记记记记录录录录ri(i=2,3,.n)ri(i=2,3,.n)均均均均要要要要和和和和前前前前i-1i-1个个个个记记记记录录录录及及及及r0r0进进进进行行行行比比比比较较较较,整整整整个个个个排序过程共进行了排序过程共进行了排序过程共进行了排序过程共进行了 n n i=(n+2)(n-1)/2 i=(n+2)(n-1)/2次比较次比较次比较次比较(最多最多最多最多);i=2i=2 移移移移动动动动记记记记录录录录次次次次数数数数
9、:每每每每个个个个记记记记录录录录都都都都要要要要进进进进行行行行riri移移移移动动动动到到到到r0r0和和和和r0r0移移移移动动动动到到到到rj+1rj+1两两两两次次次次移移移移动动动动,另另另另外外外外当当当当ri.keyri.keyrj.keyrj.key时时时时,还还还还将将将将rjrj移移移移动动动动到到到到rj+1rj+1,所所所所以以以以,当当当当初初初初始始始始文文文文件件件件为为为为正正正正序序序序时时时时,移移移移动动动动记记记记录录录录次次次次数数数数最最最最少少少少为为为为2 2(n-1n-1)次,当初始文件为逆序时移动记录次数最多为)次,当初始文件为逆序时移动记
10、录次数最多为)次,当初始文件为逆序时移动记录次数最多为)次,当初始文件为逆序时移动记录次数最多为 n n (i-1)+2(n-1)=(n+4)(n-1)/2 (i-1)+2(n-1)=(n+4)(n-1)/2次次次次(最多最多最多最多)。i=2i=2 10.2 插入排序插入排序二二.折半插入排序折半插入排序 由于是在有序子文件中确定插入的位置,因此由于是在有序子文件中确定插入的位置,因此可用折半查找来代替直接插入排序法中的顺序查找,可用折半查找来代替直接插入排序法中的顺序查找,从而可减少比较次数。从而可减少比较次数。10.2 插入排序插入排序PROC binsort(VAR r:listtyp
11、e);FOR i:=2 TO n DO s:=1;j:=i-1;r0:=ri;WHILE sj DO m:=(s+j)/2;IF rikeyrmkey 确保稳定,若改为确保稳定,若改为,则不稳定,则不稳定 THEN j:-1 ELSE s:=m+1;FOR k:=i-1 DOWNTO j+1 DO rk+1:=rk;rj+1:=r0 ENDP;binsort 移动次数未变,故仍为移动次数未变,故仍为O(n2)10.2 插入排序插入排序三三.希尔排序(希尔排序(Shells Methool)(又称为缩小增量排序又称为缩小增量排序)基基本本思思想想:分分割割成成若若干干个个较较小小的的子子文文件件
12、,对对各各个个子子文文件件分分别别进进行行直直接接插插入入排排序序,当当文文件件达达到到基基本本有有序序时时,再再对对整整个个文文件件进进行行一一次次直直接插入排序。接插入排序。依据依据:若待排序文件若待排序文件基本有序基本有序,即文件中具有特性:,即文件中具有特性:ri.key Max rj 1ji的记录数较少,的记录数较少,则文件中大多数记录都不需要进行插入。则文件中大多数记录都不需要进行插入。基本有序时,直接插入排序效率可以提高,接近于基本有序时,直接插入排序效率可以提高,接近于O(n)。10.2 插入排序插入排序4希尔排序的特点希尔排序的特点 子文件(子序列)的构成不是简单地子文件(子
13、序列)的构成不是简单地“逐段分割逐段分割”,而是将相隔某个,而是将相隔某个“增量增量”的记录组成一个子文件。的记录组成一个子文件。增量序列应是递减,且最后一个必须为增量序列应是递减,且最后一个必须为1。希尔排序法是不稳定的。希尔排序法是不稳定的。5.希尔排序算法的实现希尔排序算法的实现PROC shellsort(VAR r:ARRAY-d1:n OF rcdtypePROC shellsort(VAR r:ARRAY-d1:n OF rcdtype;d:ARRAY1.t OF integer)d:ARRAY1.t OF integer);d1.dt为为增增量量序序列列,r(-d1.n)中中,
14、-d1.0为为各各趟趟监监视视哨哨位,位,1.n为记录为记录 k:=1;k:=1;REPEAT REPEAT dh:=dk;s:=-dh+1;dh:=dk;s:=-dh+1;s为哨兵位为哨兵位,dh为增量值为增量值 FOR i:=dh+1 TO n DO FOR i:=dh+1 TO n DO rs:=ri;j:=i-dh;rs:=ri;j:=i-dh;WHILE rs.key WHILE rs.keyrj.key DOrj.key DO rj+dh:=rj;j:=j-dh;rj+dh:=rj;j:=j-dh;rj+dh:=rs;s:=s+1;rj+dh:=rs;s:=s+1;IF s IF
15、s0 THEN s:=-dh+1;0 THEN s:=-dh+1;k:=k+1 k:=k+1 UNTIL dh=1 UNTIL dh=1ENDP;shellsort ENDP;shellsort 10.2 插入排序插入排序k dh i s j -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 101 5 6 -4 1 13 49 38 65 97 76 13 27 49 55 04 -4 while 49 13 FOR 7 -3 2 while 27 38 -3 27 8 -2 3 while 49 -2 49 97 9 -1-4 while 55 -1 55 10 0 5
16、 while 04 76 0 04 交换交换5次次 13 27 49 55 04 49 38 65 97 762 3 4 -2 1 while 55 5 -1 2 while 04 27 -1 04 6 0 3 while 49 7 1(-2)4 while 38 55 -2 38 8 -1 5 while 65 9 0 6 while 97 10 1(-2)7 while 76交换交换2次次 1 13 04 49 38 27 49 55 65 97 76共交换共交换12次次 04 13 49 38 27 49 55 65 97 76 10.3 10.3 快速排序快速排序 快速排序是目前内部排
17、序中最快的方法。快速排序是目前内部排序中最快的方法。基基本本思思想想:选选取取某某个个记记录录,(通通常常选选文文件件的的第第一一个个记记录录),将将所所有有关关键键字字不不大大于于它它的的记记录录放放在在它它的的前前面面,将将所所有有关关键键字字不不小小于于它它的的记记录录放放在在它它的的后后面面,这这样样遍遍历历一一趟趟文文件件后后,将将文文件件以以该该记记录录为为界界分分为为两两部部分分,然然后后对对各各部部分分重重复复上上述述过过程程,直直到到每每一一部部分分仅仅剩剩一一个个记录为止。记录为止。具体步骤具体步骤(1)置变量置变量i,j初值分别为文件的首、尾记录位置;初值分别为文件的首、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 内部 排序 数据结构 第二 教学 课件

限制150内