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

2018-03-28  本文已影响0人  爱在夏天13

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

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

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

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

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

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

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

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

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

上一篇下一篇

猜你喜欢

热点阅读