数据结构排序算法.ppt





《数据结构排序算法.ppt》由会员分享,可在线阅读,更多相关《数据结构排序算法.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找第九章第九章排序排序本章要求本章要求【教学目的教学目的】掌握内排序方法的插入排序;选择排序;交掌握内排序方法的插入排序;选择排序;交换排序;基数排序;归并排序;排序的存储方式:连续地换排序;基数排序;归并排序;排序的存储方式:连续地址、静态链表、索引;稳定的和不稳定的排序方法的判定址、静态链表、索引;稳定的和不稳定的排序方法的判定方法,常见的稳定的排序方法和的不稳定的排序方法。了方法,常见的稳定的排序方法和的不稳定的排序方法。了解外部排序的方法以及外部排序方法的特点。解外部排序的方法以及外部排序方法的特点。【教学重点教学重点】每种排序方
2、法的算法及算法的性能分析每种排序方法的算法及算法的性能分析【教学难点教学难点】排序方法的比较及稳定性的确定排序方法的比较及稳定性的确定安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找第八章第八章查找查找一、基本概念一、基本概念二、插入排序二、插入排序三、交换排序三、交换排序四、选择排序四、选择排序五、归并排序五、归并排序安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找一、基本概念一、基本概念排序的目的排序的目的排序是为了通过关键字高效的查找相关的记录排序是为了通过关键字高效的查找相关的记录排序排序就是要调整原文件中的记录顺序,使之按关键字就是要调整原文件中的记录顺序,使之按
3、关键字递增递增(或递减或递减)次序排列起来。其形式化定义描述如下:次序排列起来。其形式化定义描述如下:输入:输入:n个记录个记录r1,r2,rn,其相应的关键字分别,其相应的关键字分别为为k1,k2,kn输出:输出:rl,r2,rn,使得,使得k1k2kn。(或或k1k2kn)/有序升序或者降序有序升序或者降序安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找一、基本概念一、基本概念排序的数据结构排序的数据结构待排序的记录采用顺序存储,待排序记录的定义为:待排序的记录采用顺序存储,待排序记录的定义为:#defineMAXSIZE100/*假定顺序表的最大长度为假定顺序表的最大长度为10
4、0*/typedefintKeyType;/*假定关键字类型为整数类型假定关键字类型为整数类型*/typedefstructKeyTypekey;/*关键字项关键字项*/OtherTypeother;/*其他项其他项*/DataType;/*数据元素类型数据元素类型*/typedefstructDataTyperMAXSIZE+1;/*r0闲置或充当哨兵*/intlength;/*顺序表长度顺序表长度*/SqList;/*顺序表类型顺序表类型*/安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找一、基本概念一、基本概念排序的数据结构排序的数据结构排序的排序的稳定性稳定性:若存在关键字相
5、同的多个记录,经过:若存在关键字相同的多个记录,经过排序后这些具有相同关键字的记录之间的相对次序排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;否则则称这种排保持不变,该排序方法是稳定的;否则则称这种排序方法是不稳定的。序方法是不稳定的。排序的排序的分类分类:按是否涉及数据的内、外存交换分类:按是否涉及数据的内、外存交换分类:内排序、外排序。内排序、外排序。内部排序内部排序方法方法有:插入排序、选择排序、交换排序、有:插入排序、选择排序、交换排序、归并排序归并排序排序的排序的效率分析效率分析:时间代价和空间代价:时间代价和空间代价安徽工程大学计算机与信息学院电子教案第
6、第八八章章 查查找找二、插入排序二、插入排序基本思想基本思想通过构建有序序列,将待排序的数据,在已通过构建有序序列,将待排序的数据,在已排好序的序列中从后向前扫描,找到其相应位排好序的序列中从后向前扫描,找到其相应位置并进行插入操作。置并进行插入操作。直接插入排序直接插入排序二分法插入排序二分法插入排序Shell排序排序安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找二、插入排序二、插入排序直接插入排序直接插入排序算法思想:算法思想:将待插入子序列元素逐步插入到有序子序列中,设将待插入子序列元素逐步插入到有序子序列中,设有一待排序序列有一待排序序列S=r1,r2,r3,ri,rn,其
7、中其中r1,r2,ri(1in)是按照关键字是按照关键字k1k2ki有序的子序列,有序的子序列,序列序列ri+1,rn无序。从序列无序。从序列ri+1,rn的第一个元的第一个元素素ri+1开始取数据元素,每取一个元素就将其插入到前面的有开始取数据元素,每取一个元素就将其插入到前面的有序序列中,并使插入后的序列有序,直到所有元素插入完成,序序列中,并使插入后的序列有序,直到所有元素插入完成,得到一个有序序列。得到一个有序序列。安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找二、插入排序二、插入排序直接插入排序直接插入排序算法:算法:voidStraightInsertSort(SqLi
8、st*S)/*对顺序表对顺序表s中的中的s-r1.length作直接插入排序作直接插入排序*/for(i=2;ilength;i+)S-r0=S-ri;/*复制为哨兵复制为哨兵*/j=i-1;while(S-r0.keyrj.key)S-rj+1=S-rj;j-;/*记录后移记录后移*/S-rj+1=S-r0;/*插入到正确位置插入到正确位置*/能不能能不能改为改为=?安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找二、插入排序二、插入排序直接插入排序直接插入排序效率分析:效率分析:空间效率:空间效率:用了一个辅助单元用了一个辅助单元r0,因此辅助空间为,因此辅助空间为O(1)时间效
9、率:时间效率:最好情形:待排序序列中各数据元素在排序前已按关键字大小最好情形:待排序序列中各数据元素在排序前已按关键字大小排好序,总的比较次数排好序,总的比较次数=n-1次次,总的移动次数总的移动次数=n-1次次,所以时间复所以时间复杂度为杂度为O(n)最坏情形:待排序序列中各数据元素为逆序状态时,最坏情形:待排序序列中各数据元素为逆序状态时,直接插入直接插入排序是稳排序是稳定的排序定的排序算法算法安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找二、插入排序二、插入排序二分插入排序二分插入排序算法思想:在插入第算法思想:在插入第i个关键码时,前个关键码时,前i1个关键已经有序,可个关
10、键已经有序,可以通过折半的方式找到插入点。以通过折半的方式找到插入点。但是,虽然可以更快地找到插入点,但意义不大?但是,虽然可以更快地找到插入点,但意义不大?因为,找到插入点后还需要进行移动元素,并没有改变移动元因为,找到插入点后还需要进行移动元素,并没有改变移动元素的次数,因此其时间复杂度并没有发生改变。素的次数,因此其时间复杂度并没有发生改变。安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找二、插入排序二、插入排序Shell排序排序算法思想:先将待排序列分割为若干个子序列分别进行直接插算法思想:先将待排序列分割为若干个子序列分别进行直接插入排序;待整个序列基本有序时,再对全体记录
11、进行一次直入排序;待整个序列基本有序时,再对全体记录进行一次直接插入排序接插入排序。也称缩小增量的直接插入排序。也称缩小增量的直接插入排序。安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找二、插入排序二、插入排序Shell排序排序算法:算法:voidShellInsert(SqList*s,intgap)/步长为步长为gap的插入排序的插入排序for(i=gap+1;ilength;i+)if(S-ri.keyri-gap.key)/*小于时,需将小于时,需将ri插入有序表插入有序表*/S-r0=S-ri;/*为统一算法设置监视哨为统一算法设置监视哨*/for(j=i-gap;j0&
12、S-r0.keyrj.key;j=j-gap)S-rj+gap=S-rj;/*记录后移记录后移*/S-rj+gap=S-r0;/*插入到正确位置插入到正确位置*/*if*/endShellInsert安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找二、插入排序二、插入排序Shell排序排序算法:算法:voidShellSort(SqList*s,intgaps,intt)/*按增量序列按增量序列gaps0,1,t-1对顺序表对顺序表S作希尔排序作希尔排序*/for(k=0;kr2.key,则将两个,则将两个记录交换,紧接着依次比较记录交换,紧接着依次比较r2和和r3,直至,直至rn-
13、1与与rn为止。这样一为止。这样一趟将关键字值最大的记录移至趟将关键字值最大的记录移至rn位置;位置;第二趟:比较第二趟:比较r1至让至让rn-1,关键字值次大的记录移动到第,关键字值次大的记录移动到第n-1位置,位置,方法同第一趟;方法同第一趟;依次完成第依次完成第3趟,第趟,第4趟,趟,n-1趟,直到所有记录都完成排序趟,直到所有记录都完成排序安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找三、交换排序三、交换排序起泡排序起泡排序算法:算法:voidBubbleSort(SqList*s)/*对顺序表对顺序表S作冒泡排序作冒泡排序*/inti,j;for(i=1;ilength-
14、1;i+)/*进行进行n-1趟排序趟排序*/for(j=2;jlength-i;j+)if(S-rj.keyrj-1.key)S-r0=S-rj;/*S-rj与与S-rj-1交换交换*/S-rj=S-rj-1;S-rj-1=S-r0;安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找三、交换排序三、交换排序起泡排序起泡排序效率分析:效率分析:算法空间:算法空间:复杂度为复杂度为O(1)总的交换次数最多为总的交换次数最多为O(n2),最少为,最少为0起泡排序起泡排序是稳定的是稳定的排序算法排序算法安徽工程大学计算机与信息学院电子教案第第八八章章 查查找找三、交换排序三、交换排序快速排序快
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 排序 算法

限制150内