- 1、本文档共80页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机算法 ——设计与分析导论;Chapter 2. Sorting算法与算法的分析技术 ;2.1 排序(Sorting)问题 ;3. 稳定(Stable)排序算法:
如果排序问题满足:若Rπ(i) = Rπ(j) 且 i j 则π(i) π(j ),则称其为稳定排序算法。稳定排序保证序列中关键字相同的记录在排序过程中不会交换次序。
4. 内部(Internal)排序算法:
数据在高速随机存储设备上(内存)进行排序操作,这时数据间的比较和移动指令的代价一般是相同的。
5. 外部(External)排序算法:
数据主要驻留在外部的低速存储设备(硬盘、磁带)上,数据在内存与硬盘(磁带)之间的传送、移动的代价明显高于数据比较操作,因此,外部排序算法的设计不同于内部排序。;6. 原址排序算法:
在排序过程中除了全部输入数据所占用的空间之外,只需有限的额外空间。如果额外空间的大小与记录数n无关,则称为原址排序。
7. 基于关键字比较的排序算法:
这类排序算法中仅对关键字进行比较和移动操作,因此关键字的比较和移动是算法的基本操作。;2.2 O(n2)阶的排序算法 ;3. 算法的分析:
关键字的比较发生在 if 语句中,总的比较次数为:
算法中的比较次数与n个关键字的值无关,因此最坏情形和平均情形的比较总次数相同。
因此,算法是O(n2)阶的。
空间代价只额外占用了几个工作单元,因此,它是个原址排序算法。 ;4. 讨论:
算法SelectSort按比较次数计算的最好情形时间复杂度为:
如果把关键字的移动作为基本操作,情况有所不同。
从算法中的if语句可看出,关键字移动min = L[j]的次数可能少于比较min L[j]的执行次数。另外,函数Swap( )需要3次移动,共3( n – 1 )次。因此,选择排序算法的平均移动次数会比较小,而最好情形则为3( n – 1 )。当数据记录比较大时,移动代价大于比较代价,选择排序也可能有较好的性能。 ;2.2.2 插入排序(Insertion Sorting)
1. 插入排序的思路:
与选择排序不同,它是从无序部分不经选择,任取一元,然后插入到有序部分的正确位置上。其步骤为:
L[ 1..n ]分为两部分:L[ 1..i ]为有序部分,L[ i+1..n ]为未排序部分。
1° i = 1 ;
2° 把L[i+1]插入到L[1..i]中的正确位置,i++;
3° if ( i n ) goto 2°;
4° 停止。
2. 算法的描述:
算法 2.2 插入排序算法 InsertSort ;3. 算法的分析:
最坏情形:
最好情形:
平均情形:设输入序列满足两个条件:
1° n个关键字值是不同的,这可以简化分析;
2° n个元素的所有不同的排列具有等可能性。
在把L[i]插入到有序的L[1..i–1]的过程中,共有i种可能的位置,由假设2°可知落入每个位置的概率为1/i。而这i种情形所需要的比较次数分别为1,2,… ,i-2,i-1,i-1,因此期望的比较次数为:;
因此,
插入排序虽然也是O(n2)阶的算法,但在一般情形下,会比选择排序块。
算法的空间代价:基本上不需要额外空间,也是一种原址排序算法。
它也是稳定的。;4. 讨论:
在基于相邻元比较交换的排序算法中,InsertSort是最优的。
如果把数据的移动作为基本操作,每一次数据比较都有一次数据移动与之对应。因此,除了在外循环的n – 1次移动之外,数据比较与移动次数是一致的,这与SelectSort算法是不同的。
2.2.3 起泡排序(Bubble Sorting)
算法 2.3 起泡排序算法 BubbleSort
算法BubbleSort的比较次数是确定的:
移动次数与数据比较相对应,交换函数Swap需要三次数据移动,在最坏情形下是比较次数的三倍,而在最好情形下不需要移动。;BubbleSort是稳定的、原址排序算法。
BubbleSort的一种实用改进算法是在程序中设一标记位,当一遍扫描中没有交换发生,则排序停止。
算法 2.4 起泡排序的改进算法 BSort
算法BSort的比较次数有所改进: ;2.3 基于相邻元比较的排序算法和希尔(Shell)排序 ;证明的关键是,在序列中,如果两个相邻元为一逆序,经过交换肯定消除了这个逆序,但这一交换只能消灭这一个逆序。
证明:
1°存在一种排列:n, n-1, … ,2, 1 为全逆序,共包含n(n-1)/2个逆序,故在最坏情形,任一依靠相邻元比较、交换完成的排序过程,至少需n(n-1)/2次比较,即W(n) = Ω(n2)。
2°对于平均情形,实际上需要计算1, 2,… ,n的所有不同排列
您可能关注的文档
- 《生活和哲学》第五课第二框 意识作用.ppt
- 《树立创新意识是唯物辩证法要求.ppt
- 《特利尔幽灵 》教学课件.ppt
- 《新人教版四年级上》平行和垂直课件.ppt
- 《圆锥侧面积》参考课件2.ppt
- 15.1.1同底数幂乘法周慧君.ppt
- 15.1.1同底数幂乘方.ppt
- 《走向高考》2013高考物理总复习 3-3超重和失重 瞬时问题 33张.ppt
- 15埃和金字塔课件--刘婷.ppt
- 17.2_勾股定理逆定理应用.ppt
- 2023咸阳职业技术学院招聘笔试真题参考答案详解.docx
- 2023四川化工职业技术学院招聘笔试真题及参考答案详解.docx
- 2023哈尔滨职业技术学院招聘笔试真题及参考答案详解.docx
- 2023商洛职业技术学院招聘笔试真题及答案详解1套.docx
- 2023呼伦贝尔职业技术学院招聘笔试真题参考答案详解.docx
- 2023南阳农业职业学院招聘笔试真题参考答案详解.docx
- 2023天津公安警官职业学院招聘笔试真题带答案详解.docx
- 2023年上海电机学院招聘笔试真题参考答案详解.docx
- 2023年四川艺术职业学院招聘笔试真题参考答案详解.docx
- 2023安徽体育运动职业技术学院招聘笔试真题及答案详解一套.docx
文档评论(0)