C语言中的冒泡排序算法优化-最新资料

更新时间:2023-12-15 05:37:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言中的冒泡排序算法优化

数学中的数值大小在计算机中经常需要按规律排列,传统算法有冒泡排序法和选择排序法两种。其中数冒泡排序法较为经典。本文从传统方法的冒泡排序入手,对其进行常见的改进算法分析比;最后提出一种比较更为合理的优化算法。 1 传统的冒泡排序及改进 1.1 传统的冒泡排序 1.2 优化后的冒泡排序

上述1.1中的算法简单、容易理解,但有很多情况下它都有几趟排序是不会有任何的操作。为了避免这种情况一些专家和学者提出使用一个标记变量来解决,即当排序不发生任何数据交换时就立即停止;这样的解决办法即避免了无效的重复排序,又避免了有限资源的浪费。

2 一种提高100%效率的优化算法——同时前后冒泡 需要注意的是将上述程序段增加到1.1节中程序的第17行下方,然后从第12行开始到这里的结束部分总起来用一个大括号括起来,做为程序第11行循环的循环体。程序段中使用了变量m,它和在程序第19行中的变量是同一个,但含意完全不一样,这里用来表示是从程序的最后开始执行;而第19行中的表示是循环控制变量;只不过前面用过就不在需要它的值,所以这里可以重新赋初值来使用。

将上述测试数据输入测试,大家就会发现算法的有效循环执行了2次,到了第3次跳出;这是怎么回事情呢?这样的优化是如何工作的呢?

3 同时前后冒泡有效性分析验证

从上面两张表的对比得出,在这样的数据序列下,比原来的改进算法效率提高了50%。假定每个数在的位置,在每一趟比较以后都不在应该的位置上即都是无序的(排列好的除外);那么表1中第1趟只能排好105,而表2中则排好了15和105两个位置,效率可见提高了一倍;以此类推效率提高100%。而这里我们的测试数据在表一中的第一趟已经把38,41,52,54,99,105共6个数排好,固效率无法提高一倍,这是测试数据后面几个数已经从小到大排好造成的,跟我们的立论不冲突。 由此可见,本文提出的算法是有效的。

本文来源:https://www.bwwdw.com/article/h3m5.html

Top