网上关于这个问题的描述繁多,但并不一定找准了问题的关键。
两者本质都是任意2个数的比较,然后符合要求的,再做数值的交换。这里有一个重要的点需要提出来,巫差异的数组元素排序,冒泡和选择是一致的,区别在于交换形式,选择侧重一步到位,冒泡关注循序渐进。举个简单的例子,可能你在用选择排序时获取首位的最大值只需要2次交换,但后续处理的却较多,相比而言,冒泡排序获取首位最大值可能就需要4次或更多,但其后续的逻辑就比选择排序要好。
两者在时间复杂度上的差异的关键,
小司机觉得是涉及到相同元素的处理。
选择一旦交换,后续相同数字不做处理
冒泡一旦交换,就可能是一大波僵尸的到来。毫无意义的比较。因此如果在设计冒泡排序时,增加对之前数字的相同比较就可以提高冒泡的效率。
但仍不敌选择,因为选择是关注的是结果。
即及时的最值每次都参与比较,相当于不需要考虑重复数字的比较。
小司机最近准备完善一些c需要的算法,整理后给大家分析一下。如果小司机说的有不对的地方还请指教,小司机最近在找工作,希望顺利吧。
网友评论