什么是冒泡排序算法?如何优化?
冒泡排序是最基础,最简单的排序算法。虽然这种算法效率比较低,但是可以快速编写,在排序元素比较少时比较管用。
我们来看一下,假如有一个数组,里面有5个元素,分别是5,7,1,3,2。我们想把他们从小到大排列出来,那需要怎么做呢?我们可以这样操作:依次比较邻近的2个元素,把小的那个数挪到左边。
比如首先比较第一对数5和7,因为他们顺序正确,所以不需要换位置。接着看第二对数7和1,我们就需要把1挪到左边来。第三对数7和3,我们就需要把3挪到左边来。最后一对7和2,我们再把他们顺序挪一下。
这样就完成了一次计算,数组由5,7,1,3,2变成了5,1,3,2,7。在这过程中,数字7一直向上移动,好像水中的气泡往上升一样,所以这种排序被称为冒泡排序。
我们来总体算一下,第一次循环,会把最大的数挪到正确位置。但因为有5个元素,所以我们需要再循环3次,依次变成13257,12357,12357,这4个元素就正确排列好了。每一次循环,我们需要对比4次,同时我们共循环了4轮,所以,我们一共需要对比4+4+4+4=16次。
那有什么办法,可以优化一下吗?因为每一轮循环,末尾的数字就已经排列好了,不需要再进行对比,所以,我们就只需要对比4+3+2+1=10次。这样排序算法就能更快一点了。
感觉还是有点多,我们还可以再次优化,我们看第三次循环,其实这个数组就已经按顺序排列好了,没有必要再进行第四次循环对比。所以我们可以进行检测,如果在某次循环中,数组中没有任何元素需要挪动位置,就不要再进行对比了。所以,我们就只需要对比4+3+2=9次。
感谢大家观看!欢迎关注、评论、点赞三连