数据结构 第11章 内排序.ppt

数据结构 第11章 内排序.ppt

ID:48193120

大小:650.00 KB

页数:77页

时间:2020-01-18

数据结构 第11章  内排序.ppt_第1页
数据结构 第11章  内排序.ppt_第2页
数据结构 第11章  内排序.ppt_第3页
数据结构 第11章  内排序.ppt_第4页
数据结构 第11章  内排序.ppt_第5页
资源描述:

《数据结构 第11章 内排序.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第11章内排序11.6基数排序本章小结11.1排序的基本概念11.2插入排序11.3交换排序11.4选择排序11.5归并排序11.7各种内排序方法的比较和选择11.1排序的基本概念所谓排序,就是要整理表中的记录,使之按关键字递增(或递减)有序排列。其确切定义如下:输入:n个记录,R0,R1,…,Rn-1,其相应的关键字分别为k0,k1,…,kn-1。输出:Ri0,Ri1,…,Rin-1,使得ki0≤ki1≤…≤kin-1(或ki0≥ki1≥…≥kin-1)。当待排序记录的关键字均不相同时,排序的结果是惟一的,否则排序的结果不一定惟一。如果待排序的表中,存在有多个关键

2、字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,则称这种排序方法是稳定的;反之,若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。在排序过程中,若整个表都是放在内存中处理,排序时不涉及数据的内、外存交换,则称之为内排序;反之,若排序过程中要进行数据的内、外存交换,则称之为外排序。内排序的方法内部排序的过程是一个逐步扩大记录的有序序列长度的过程。经过一趟排序有序序列区无序序列区有序序列区无序序列区待排序的顺序表类型的类型定义如下:typedefintKeyType;/*定义关键字类型*/typedefstruct/*记录

3、类型*/{KeyTypekey;/*关键字项*/InfoTypedata;/*其他数据项,类型为InfoType*/}RecType;/*排序的记录类型定义*/11.2插入排序插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子表中的适当位置,直到全部记录插入完成为止。两种插入排序方法:(1)直接插入排序(2)希尔排序。11.2.1直接插入排序假设待排序的记录存放在数组R[0..n-1]中,排序过程的某一中间时刻,R被划分成两个子区间R[0..i-1]和R[i..n-1],其中:前一个子区间是已排好序的有序区,后一个子区间则是当前未排

4、序的部分,不妨称其为无序区。直接插入排序的基本操作是将当前无序区的第1个记录R[i]插入到有序区R[0..i-1]中适当的位置上,使R[0..i]变为新的有序区。这种方法通常称为增量法,因为它每次使有序区增加1个记录。R[0]jR[i]j=i-1插入位置在有序区中插入R[i]的过程voidInsertSort(RecTypeR[],intn)/*对R[0..n-1]按递增有序进行直接插入排序*/{inti,j;RecTypetemp;for(i=1;i

5、le(j>=0&&temp.key

6、其基本思想是:先取定一个小于n的整数d1作为第一个增量,把表的全部记录分成d1个组,所有距离为d1的倍数的记录放在同一个组中,在各组内进行直接插入排序;然后,取第二个增量d2(<d1),重复上述的分组和排序,直至所取的增量dt=1(dt

7、R[1+kd]}…{R[d-1],R[2d-1],R[3d-1],…,R[(k+1)d-1]}例如:162512304711233691831第一趟希尔排序,设增量d=5112312918162536304731第二趟希尔排序,设增量d=3918121123162531304736第三趟希尔排序,设增量d=1911121618232530313647voidShellSort(RecTypeR[],intn)/*希尔排序算法*/{inti,j,d;RecTypetemp;d=n/2;/*d取初值n/2*/while(d>0){for(i=d;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。