第7章-排序-Sorting第3章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第7章-排序-Sorting第3章课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 排序 Sorting 课件
- 资源描述:
-
1、第第7章章 排序排序Sorting严陈第3章内容提要内容提要l排序的基本概念l排序算法的分析l插入排序(直接,二分)l交换排序(冒泡,快速)l选择(selection,堆排序)l归并(merge)l基数排序基本概念基本概念l排序:将一组杂乱无章的数据按一定的规律顺次排列起来。l数据表(data list):它是待排序数据对象的有限集合。l排序码(key):通常数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据。该域即为排序码。每个数据表用哪个属性域作为排序码,要视具体的应用需要而定。分类分类l内排序与外排序l内排序是指在排序期间数据对象全部存放在内存的排序;
2、l外排序是指在排序期间全部对象个数太多,不能同时存放在内存,必须根据排序过程的要求,不断在内、外存之间移动的排序。排序算法的稳定性排序算法的稳定性l如果在对象序列中有两个对象ri和rj,它们的排序码ki=kj,稳定的:排序前后,对象ri和和r j的相对位置不的相对位置不变变不稳定:else算法评价算法评价l时间开销:l排序的时间开销可用算法执行中的数据比较次数与数据移动次数来衡量。l算法运行时间代价的大略估算一般都按平均情况进行估算。对于那些受对象排序码序列初始排列及对象个数影响较大的,需要按最好情况和最坏情况进行估算 l空间开销:算法执行时所需的附加存储插入排序插入排序直接插入排序直接插入排
3、序直接插入排序直接插入排序直接插入排序直接插入排序:算法分析算法分析l设待排序对象个数为n,则该算法的主程序执行n-1趟排序码比较次数和对象移动次数与对象排序码的初始排列有关l最好情况下,排序前对象有序比较(KCN):n-1;移动次数(RMN):为2(n-1)l最坏情况下,第i趟时第i个对象必须与前面i个对象都做排序码比较,并且每做1次比较就要做1次数据移动。l在平均情况下的排序码比较次数和对象移动次数约为n2/4。因此,直接插入排序的时间复杂度为o(n2)l直接插入排序是一种稳定的排序方法 二分插入排序二分插入排序(Binary Insert sort)l基本思想是:设在顺序表中有一个对象序
4、列V0,V1,V n-1。其中,V0,V 1,Vi-1是已经排好序的对象。在插入Vi时,利用二分搜索法寻找Vi的插入位置。二分插入排序二分插入排序二分插入排序二分插入排序:分析分析l二分搜索比顺序搜索查找快,所以二分插入排序就平均性能来说比直接插入排序要快。l它所需的排序码比较次数与待排序对象序列的初始排列无关,仅依赖于对象个数。在插入第i个对象时,需要经过log2 i+1次排序码比较,才能确定它应插入的位置。因此,将n个对象(为推导方便,设为n=2 k)用折半插入排序所进行的排序码比较次数为l二分插入排序是一个稳定的排序方法。l 当n较大时,总排序码比较次数比直接插入排序的最坏情况要好得多,
5、但比其最好情况要差。l在对象的初始排列已经按排序码排好序或接近有序时,直接插入排序比折半插入排序执行的排序码比较次数要少。折半插入排序的对象移动次数与直接插入排序相同,依赖于对象的初始排列 使用链表插入排序使用链表插入排序 l每插入一个对象,最大排序码比较次数等于链表中已排好序的对象个数 l最小排序码比较次数为1 l故总的排序码l比较次数最小为(n-1)l最大为l 移动次数为0l空间增加了指针域,和头结点交换排序交换排序交换排序交换排序l数据两两比较,逆序交换,直到全部有序l冒泡,快速冒泡排序冒泡排序(Bubble Sort)l对象个数n。最多作最多作n-1趟,i=1,2,n-1li趟中从后向
6、前j=n-1,n-2,i,顺次两两比较l比较如果发生逆序,则交换V j-1 和V j。lVoid BubbleSort(int*data,int n)i=0;while(ii;j-)If(datajdataj-1)交换数据;last=j;i=last;i是无序集的下界算法分析算法分析l最好:n-1次比较,移动为0l最坏l需要一个附加空间l稳定快速排序快速排序l基本思想:l任选一个记录,以其关键字为“枢轴”,序列中比它小的移动到该记录之前,反之移动到它之后l通过一趟排序将待排的记录分割成两个区域,一个区域中记录的关键字比另一个区域的关键字小(一次划分)l然后左右两边分别处理直到排好快速排序快速排
展开阅读全文