关于c语言冒泡和选择排序的时间复杂度的深入分析。

网上关于这个问题的描述繁多,但并不一定找准了问题的关键。

两者本质都是任意2个数的比较,然后符合要求的,再做数值的交换。这里有一个重要的点需要提出来,巫差异的数组元素排序,冒泡和选择是一致的,区别在于交换形式,选择侧重一步到位,冒泡关注循序渐进。举个简单的例子,可能你在用选择排序时获取首位的最大值只需要2次交换,但后续处理的却较多,相比而言,冒泡排序获取首位最大值可能就需要4次或更多,但其后续的逻辑就比选择排序要好。

两者在时间复杂度上的差异的关键,


小司机觉得是涉及到相同元素的处理。

选择一旦交换,后续相同数字不做处理

冒泡一旦交换,就可能是一大波僵尸的到来。毫无意义的比较。因此如果在设计冒泡排序时,增加对之前数字的相同比较就可以提高冒泡的效率。


但仍不敌选择,因为选择是关注的是结果。

即及时的最值每次都参与比较,相当于不需要考虑重复数字的比较。


小司机最近准备完善一些c需要的算法,整理后给大家分析一下。如果小司机说的有不对的地方还请指教,小司机最近在找工作,希望顺利吧。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容