- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
南京邮电大学计算机学院陈慧南2006年9月数据结构DataStructuresinC++南京邮电大学计算机学院陈慧南2006年9月第10章内排序南京邮电大学计算机学院陈慧南2006年9月10.1基本概念10.2简单排序算法10.3快速排序10.4两路合并排序南京邮电大学计算机学院陈慧南2006年9月10.1基本概念南京邮电大学计算机学院陈慧南2006年9月设有n个数据元素的序列(R0,R1,…,Rn-1),Ki是Ri的关键字。所谓排序,就是找(0,1,…,n-1)的一种排列p(0),p(1),…,p(n-1),使得序列按Kp(0)?Kp(1)?…?Kp(n-1)(非递减)或Kp(0)?Kp(1)?…?Kp(n-1)(非递增)次序排列为:(Rp(0),Rp(1),…,Rp(n-1))南京邮电大学计算机学院陈慧南2006年9月序列中两个元素Ri和Rj(ij),且Ki=Kj,若排序后仍保持p(i)p(j),即Ri仍然排在Rj之前,则称所用的排序算法是稳定的。反之,称该排序算法是不稳定的。如果待排序元素总数相对于内存而言较小,整个排序过程可以在内存中进行,则称之为内部排序;反之,如果待排序元素总数较多,不能全部放入内存,排序过程中需访问外存,则称之为外部排序。本章讨论内部排序。南京邮电大学计算机学院陈慧南2006年9月10.2简单排序算法南京邮电大学计算机学院陈慧南2006年9月10.2.1简单选择排序南京邮电大学计算机学院陈慧南2006年9月templateclassTvoidSelectSort(TA[],intn){ intsmall;for(inti=0;in-1;i++){ small=i;for(intj=i+1;jn;j++)if(A[j]A[small])small=j;Swap(A[i],A[small]);}}南京邮电大学计算机学院陈慧南2006年9月该算法执行时间与元素的初始排列无关。不论初始排列如何,该算法都必须执行n-1趟,每趟执行n-i-1次关键字的比较,这样总的比较次数为:南京邮电大学计算机学院陈慧南2006年9月简单选择排序的最好、最坏和平均情况的时间复杂度都为O(n2),而且。另外,它还需交换元素(n-1)次和移动元素3(n-1)次(交换一次要移动三个元素)。该排序算法经过一趟排序后,就能确定一个元素的最终位置。简单选择排序是不稳定的排序方法南京邮电大学计算机学院陈慧南2006年9月10.2.2直接插入排序南京邮电大学计算机学院陈慧南2006年9月templateclassTvoidInsertSort(TA[],intn){for(inti=1;in;i++){ intj=i;Ttemp=A[i];while(j0tempA[j-1]){ A[j]=A[j-1];j--; } A[j]=temp;}}?南京邮电大学计算机学院陈慧南2006年9月直接插入排序算法必须进行n-1趟。最好情况下,即初始序列有序,执行n-1趟,但每一趟只比较一次,移动元素两次,总的比较次数是(n-1),移动元素次数是2(n-1)。因此最好情况下的时间复杂度就是O(n)。最坏情况(非递增)下,最多比较i次,因此需要的比较次数是:南京邮电大学计算机学院陈慧南2006年9月9.2.3冒泡排序(48,36,68,72,12,48,02)(36,48,68,72,12,48,02)(36,48,68,72,12,48,02)(36,48,68,72,1
文档评论(0)