排序算法详解优秀课件.ppt
《排序算法详解优秀课件.ppt》由会员分享,可在线阅读,更多相关《排序算法详解优秀课件.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Hu JunfengHu JunfengHu JunfengHu Junfeng排序算法排序算法详解解第1页,本讲稿共68页问题的提出:问题的提出:为什么要排序?有序表的优点?缺点?构造关系。按照什么原则排序?比较?如何进行排序?第2页,本讲稿共68页基本概念基本概念排序排序(Sorting):简单地说,排序就是把一组记录一组记录按照某个(或某几个)字段的值以递增(由小到大)或递减(由大到小)的次序重新排列的过程。(如按年龄从小到大排序)学号姓名年龄性别2004001张佳18男2004002王鹏19男2004003刘宁17女2004004李娟18女2004005陈涛19男2004006李小燕1
2、8女第3页,本讲稿共68页作为比较基础的一个(或多个)字段,称为排序码排序码。排序码可以是数值、符号或符号串。排序码排序码不一定是关键码,是关键码,关键码可以作为排序码。关键码是唯一的,但排序码不一定唯一。排序码不唯一时,排序的结果可能不唯一。参与排序的对象,称为记录。一个记录可以包含多个字段。如果记录集合中存在多个排序码排序码相同的记录,经过排序后,排序码排序码相同的记录的前后次序保持不变,则这种排序方法称为是稳定稳定的,否则是不稳定不稳定的。排序码 与 关键码(primary key)第4页,本讲稿共68页排序方法可以分为五种插入插入排序、选择选择排序、交换交换排序、分配分配排序和归并归并
3、排序。在排序过程中,全部记录存放在内存,则称为内排序内排序,如果排序过程中需要使用外存,则称为外排序。外排序。本章侧重讨论内排序的方法,但有些方法(特别是归并排序的思想)也可以用于外排序。排序的类型第5页,本讲稿共68页排序算法的评价排序算法的评价评价排序算法好坏的标准执行算法所需的时间执行算法所需要的附加空间算法本身的复杂程度也是考虑的一个因素排序的时间开销时间开销是算法好坏的最重要的标志排序的时间开销衡量标准:算法执行中的比较次数(必须)。算法执行中的移动次数(有可能避免)。通常会关注最坏情况和平均情况的开销。第6页,本讲稿共68页插入排序插入排序基本思想:每步将一个待排序的记录,按其排序
4、码大小插到前面已经排序的字序列的合适位置,直到全部插入排序完为止。x 顺次选取一个元素顺次选取一个元素插入到合适位置插入到合适位置第7页,本讲稿共68页插入排序的细分类插入排序的细分类n如何插入到已排好序的序列中?v直接插入(从后向前找位置后插入)O(n2)v 二分法插入(按二分法找位置后插入)O(nlog2n)v 表插入排序(按链表查找位置后插入)O(n2)第8页,本讲稿共68页直接插入排序直接插入排序基本思想:假定前面m 个元素已经排序;取第(m+1)个元素,插入到前面的适当位置;一直重复,到m=n 为止。(初始情况下,m=1)第9页,本讲稿共68页 第一趟:第一趟:2323,起始只有一个
5、记录起始只有一个记录 1111,23 ,23 11 第二趟:第二趟:1111,2323,11 11,2323,5555 55 第三趟:第三趟:1111,2323,5555,11 11,2323,5555,9797 97 第四趟:第四趟:1111,2323,5555,9797,11 11,1919,2323,5555,97 97 19 第五趟:第五趟:1111,1919,2323,5555,9797,11 11,1919,2323,5555,8080,97 97 80示例示例:23,11,55,97,19,80第10页,本讲稿共68页直接插入排序的算法中记录的数据结构直接插入排序的算法中记录的数
6、据结构typedef int KeyType;typedef int DataType;typedef struct KeyType key;/*排序码字段*/DataType info;/*记录的其他字段*/RecordNode;typedef struct int n;/*n为文件中的记录个数,nMAXNUM*/RecordNode*record;SortObject;第11页,本讲稿共68页直接插入排序算法复杂度评价直接插入排序算法复杂度评价极端情况下:极端情况下:最小比较次数最小比较次数每个记录仅比较一次每个记录仅比较一次最大比较次数最大比较次数每个记录比较已每个记录比较已排好序的记录
7、长度排好序的记录长度第12页,本讲稿共68页直接插入排序算法评价直接插入排序算法评价2 2最小移动次数最小移动次数 最大移动次数最大移动次数 第13页,本讲稿共68页直接插入排序算法评价直接插入排序算法评价3初始数据状态相关:文件初态不同时,直接插入排序所耗费的时间有很大差异。若文件初态为正序,则算法的时间复杂度为O(n)若初态为反序,则时间复杂度为O(n2)第14页,本讲稿共68页直接插入排序算法评价直接插入排序算法评价4 平均复杂度平均复杂度插插入入记记录录Ri-1Ri-1,有有i i种种可可能能的的插插入入位位置置,即即插插入入到到第第0 0,1 1,i-1i-1位位置置上上,假假设设每
8、每种种情情况况发发生生的的概概率率是是相相等等的的,均均为为 p pj j=1/i(j=0,1,i-1)=1/i(j=0,1,i-1)比比较较次次数数为为C Cj j=j+1(j=0,i-2,i-2)=j+1(j=0,i-2,i-2),则则插插入入记记录录R Ri-1i-1的的平平均比较次数为均比较次数为第15页,本讲稿共68页直接插入排序算法评价直接插入排序算法评价5 平均复杂度平均复杂度直接插入排序的 总的比较次数为:第16页,本讲稿共68页直接插入排序算法评价直接插入排序算法评价直接插入排序算法的平均移动次数与平均比较次数同级,也是O(n2)直接插入排序的平均时间复杂度为T(n)=O(n
9、2)算法中引入了一个附加的记录空间temp,因此辅助空间为S(n)=O(1)直接插入排序是稳定的第17页,本讲稿共68页存储结构与算法优化存储结构与算法优化顺序存储结构:二分插入算法,减少比较次数。链式存储结构:减少移动次数。第18页,本讲稿共68页二分法插入排序二分法插入排序特点:在直接插入排序的基础上减少比较的次数,即在插入Ri时改用二分法比较找插入位置,便得到二分法插入二分法插入排序限制:必须采用顺序存储顺序存储方式。第19页,本讲稿共68页例:有例:有6个记录,前个记录,前5 个已排序的基础上,对第个已排序的基础上,对第6个记录排序。个记录排序。15 27 36 53 69 42 lo
10、w mid high 15 27 36 53 69 42 low high mid 15 27 36 53 69 42 high low 15 27 36 42 53 69 (high36)(4253 )第20页,本讲稿共68页二分法插入排序算法void binSort(SortObject*pvector)int i,j,left,mid,right;RecordNode temp;for(i=1;i n;i+)temp=pvector-recordi;left=0;right=i 1;while(left=right)mid=(left+right)/2;if(temp.key recor
11、dmid.key)right=mid-1;else left=mid+1;/while for(j=i-1;j=left;j-)pvector-recordj+1=pvector-recordj;if(left!=i)pvector-recordleft=temp;/for /binSort第21页,本讲稿共68页二分插入排序比较次数二分插入排序比较次数二分插入排序的比较次数与待排序记录的初始状态无关,仅依赖于记录的个数,插入第i个记录时,如果 ,则无论排序码的大小,都恰好经过 次比较才能确定插入位置,如果,则比较次数为j+1,因此,将n(n=2k)个记录排序的总比较次数为第22页,本讲稿共6
12、8页二分法插入排序方法性能分析二分法插入排序方法性能分析当n较大时,比直接插入排序的最大比较次数少得多。但大于直接插入排序的最小比较次数算法的移动次数与直接插入排序算法的相同最坏的情况为n2/2最好的情况为n平均移动次数为O(n2)二分法插入排序算法的平均时间复杂度为T(n)=O(n2)二分插入排序法是稳定的排序算法,在检索时采用leftright结束,left、right的修改原则是:temp.key recordmid.key,保证排序是稳定的。第23页,本讲稿共68页结论结论移动次数与直接插入排序相同,最坏的情况为n2/2,最好的情况为n,平均移动次数为O(n2)二分法插入排序算法的平均
13、时间复杂度为 T(n)=O(n2)二分法插入排序是稳定的第24页,本讲稿共68页表插入排序表插入排序表插入排序是在直接插入排序的基础上减少移动的次数。基本思想:在记录中设置一个指针字段,记录用链表连接插入记录Ri时,记录R0至Ri-1已经排序,先将记录Ri脱链再采用顺序比较的方法找到Ri应插入的位置,将Ri插入链表。第25页,本讲稿共68页struct Node;/*单链表结点类型*/typedef struct Node ListNode;struct Node KeyType key;/*排序码字段*/DataType info;/*记录的其它字段*/ListNode*next;/*记录的
14、指针字段*/;typedef ListNode*LinkList;表插入算法中记录的数据结构表插入算法中记录的数据结构第26页,本讲稿共68页表插入排序的算法性能分析表插入排序的算法性能分析 第i趟排序:最多比较次数i次,最少比较次数1次。n-1趟总的比较次数:最多:最少:n-1 记录移动次数:0 时间效率:O(n2)辅助空间:O(n)指针 稳定性:p-key key保证稳定的排序。第27页,本讲稿共68页选择排序选择排序思想:每趟从待排序的记录序列中选择关键字最小的记录放置到已排序表的最前位置,直到全部排完。关键问题:在剩余的待排序记录序列中找到最小关键码记录。方法:直接选择排序堆排序。第2
15、8页,本讲稿共68页直接选择排序直接选择排序方法是首先在所有记录中选出排序码最小的记录,与第一个记录交换然后在其余的记录中再选出排序码最小的记录与第二个记录交换以此类推,直到所有记录排好序第29页,本讲稿共68页直接选择排序性能分析直接选择排序性能分析选择排序的比较次数与记录的初始状态无关。第i趟排序:从第i个记录开始,顺序比较选择最小关键码记录需要n-i次比较。总的比较次数:移动次数:Mmin=0 (初始为正序时)最多移动次数:Mmax=3(n-1)(初始为逆序时,每趟1次交换,3次移动完成)时间复杂度:T(n)=O(n2),辅助空间1个记录单位:Temp,稳定性:不稳定的排序。第30页,本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 排序 算法 详解 优秀 课件
限制150内