- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
. .
. . .
双向起泡的排序算法
1.课题容和要求
1.1课题容:双向起泡的排序算法,即相邻两遍向相反的方向起泡。
双向起泡排序法,向两个方向漂浮,通过一趟排序,可找出关键字“最大”和“最小”的两个记录,因而相比起泡算法速度大大提高了.
1.2要求
设计一个排序算法,使之拥有通过一次循环使两端得到最大数最小数的功能
与起泡法相比较,在时间性能上要有一个很大的突破
设计思路分析
2.1基本思想
起泡排序的基本思想
起泡排序易于冒泡排序算法合并,即向后推出最大数。将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i]的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上“飘浮”。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。一般地,第i遍处理时,不必检查第i个位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。即就是在一组待排序的数据中,两两比较数据的大小,发现两个记录的排序次序相反时就交换位置,直到没有反序的记录为止。也就是说它重复地走访过要排序的序列,一次比较两个项目,如果他们的顺序错误就把他们交换过来。走访序列的工作是重复地进行直到没有再需要做交换动作,该序列已经排序完成。一趟冒泡,至少可以把值最大的元素送到最后位置(或最上边);当然也可以倒过来做,把值小的元素向前移或向下移,一趟冒泡,至少可以把值最小的元素送到最前面的位置(或最下边)。
双向起泡排序算法思想
双向起泡排序是冒泡排序的升级版,双向起泡排序连够在一次循环中同时取得最大值与最小值,所以用双向冒泡排序的交换的次数减少了,从而达到了优化起泡法的作用。双向起泡法和通常的冒泡法比较,两者比较次数基本相同,但数据交换的次数相差很大,双向起泡法要大大小于冒泡法。
2.2算法分析:
1,分析双向起泡排序与传统的起泡排序非常相似,只不过起泡排序对数据序列的扫描始终朝着一个方向,而双向起泡排序对数据序列的扫描是在两个方向上交替进行.双向起泡排序算法设计难度略高于起泡排序,但它使排序效率在一定围有一定程度的提高.上述双向起泡排序算法至少需进行1趟扫描,至多需进行n一1趟扫描,即在待排序数据初始有序(正序)情况下,关键字的比较次数为”一1,数据的移动次数为0;在待排序数据初始逆序的情况下,关键字的比较次数为”(z一1)/2,最坏情况下,每一次比较均会发生数据的交换,即移动次数为3n(~1)/2.显然双向起泡排序与起泡排序算法具有相同的时间复杂度,并且在正序和逆序的情况下,所需的关键字的比较次数和移动次数完全相同.
2.性能测试比较由于渐进复杂度分析的方法不能区分具有相同时间复杂度的算法,因此需要进行进一步测试.有研究设计者对双向起泡排序和起泡排序算法进行270延边大学学报(自然科学版)第27卷了性能对比测试,结果如表1所示.测试所用数据均为16位非负随机数.测试结果表明,双向起泡排序与起泡排序算法的平均移动次数始终相同;而对随机给出的数据序列,双向起泡排序算法要比起泡排序算法的平均比较次数要少.由于测试程序的统计量不是运行时间,所以测试结果不依赖于具体计算机的软、硬件等环境因素,而仅与算法有关.虽然在不同的计算机硬件、软件环境下,对于不同的待排序数据序列,其运行时间的测试结果也会不同,但表中数据可以在一定程度上反映算法的性能.测试结果表明,当数据量不大时,双向起泡排序并不比起泡排序效率更高,这是由于双向起泡排序算法平均比较次数较少的优点不足以抵消其程序结构复杂所带来的额外开销,而当数据量较大时,双向起泡排序的时间性能则明显优于起泡排序运行时间的测试结果。
2.3事例比较:
初始关键字: 49 38 65 97 76 13 27 46
冒泡排序: 49 38 65 97 76 13 27 46
第一趟结果:38 49 65 76 13 27 46 (97)
第二趟结果:38 49 65 13 27 46 (76)
第三趟结果:38 49 13 27 46 (65)
第四趟结果:38 13 27 46 (49)
第五趟结果:13 27 38 (46)
第六趟结果:13 27 (38)
第七趟结果:(13) (27)
从图中可以看出, 每一趟排序,
原创力文档


文档评论(0)