- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章查找和排序技术
2.冒泡排序的算法实现 如用变量m记录从前往后扫描时发生最后一次交换的位置;用k记录从后往前扫描时发生最后一次交换的位置。 则下一次扫描子表的范围是 k~m。k不断增大,m不断减小,当k≥m时,表示这个表已排序好。 所以,m取值 = 0 停止扫描(从前往后扫描,子表变为空) 0 需扫描 k取值 = n 停止扫描(从后往前扫描,子表变为空) n 需扫描 算法3.5 对无序序列P(1:n)进行冒泡排序。 PROCEDURE BUBSORT ( P, n ) k=1; m=n WHILE (km) DO { j=m-1; m=0 FOR i=k TO j DO IF ( P (i) P (i+1)) THEN { d= P(i); P(i)=P(i+1); P(i+1)=d; m=i ;} j=k+1; k=n; FOR i=m TO j BY –1 DO IF ( P(i-1) P (i)) THEN { d= P(i); P(i)=P(i-1); P(i+1)=d; k=i;} } RETURN 从冒泡排序的算法可看出,若待排序的元素长度为n,则在最坏的情况下,需要从前向后扫描n/2遍,从后向前扫描n/2遍,需要进行(n-1)+(n-2)+...+2+1=n(n-1)/2次比较, 因此冒泡排序算法的时间复杂度为O(n2)。由于其中的元素移动较多,所以属于排序中速度较慢的一种。空间复杂度为O(1)。 二、 快速排序(Quick Sorting) 1.快速排序的基本思想 任取待排序序列中的某个元素作为基准,通过一趟排序,将一个无序表分割成左右两个独立子区,其中左子序列元素的排序码均不大于基准元素的排序码,右子序列的排序码均不小于基准元素的排序码,然后分别对两个子序列继续进行分割,直至所有子序列为空或只有一个元素为止。 把待排序区间按照基准元素的排序码分为左右两个子序列的过程叫做一次分割。 2.快速排序的算法实现 ⑴ 线性表的分割 选基准元素T,在表第一个、中间一个与最后一个元素中选取中间项P(k),将P(k)赋给T,再将表中第一个元素移到P(k)位置上 (或用第一个元素作基准元素,将P(1) 赋给T);空出第一个元素位置。然后设置两个指针i和 j分别指向表的起始与最后位置。反复作以下两步: ① 将j逐渐减小,并逐一比较P(j)与T,直到发现一个P(j)T为 止,将P(j)移到 P(i)位置上,空出P(j)位置; ② 将i逐渐增加,逐一比较 P(i)和T,直到发现一个P(i) T为止, 将 P(i)移到 P(j)位置上,空出P(i)位置; 上述两个操作交替进行,直到指针i与j指向同一个位置(i=j)为止,此时将T移到P(i)的位置上。 这个过程实际上是将所有小于T的元素移到表的前部,而将所有大于T的元素移到表的后部,最后以T为界将线性表分为前后两部分,前一部分排序码的值不大于T,后一部分排序码的值不小于T。 例:给定排序码为:(46,55,13,42,94,05,17,70) 选取第一个元素为基准元素,T = P(1) = 46 [ 46 55 13 42 94 05 17 70 ] i j [ 46 55 13 42 94 05 17 70 ] i j [ 17 55 13 42 94 05 17 70 ] i j [ 17 55 13 42 94 05 55 70 ] i j [ 17 05 13 42 94 05 55 70 ] i j [ 17 05
您可能关注的文档
- 无线现场堪察安装和指导.ppt
- 极大似然估计原理与方法1.ppt
- 新编英语教程2(第三版)第1单元.ppt
- 桂林电子科技大学 微机原理D5.4.ppt
- 案例课:建设工程质量问题和质量事故处理.ppt
- 梁老师备课八年级历史下册第10课_建设有中国特色社会主义ppt.ppt
- 正反优劣观点作文.ppt
- 正弦激励下一阶电路响应.ppt
- 每一个不曾起舞日子,都是对生命辜负.ppt
- 新版七年级下(新目标) Unit 12 What did you do last week Self check.ppt
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)