冒泡排序算法是排序算法里面基础算法之一,其理解简单,编程难度小,但是对于初学者来说,理解还是需要认真静下心来手动推演。
其实冒泡排序算法的核心思想就是:每一次从头开始遍历,比较相邻的数,然后把大的数向后面移动(以升序为例),所以每一次遍历,都可以把目前最大的数移到后面,后面的数不需要操作,所以每次遍历的终止条件是 j 从 1 到 i-1;i表示遍历的次数,i+1 到n表示已经排序好的数。
时间复杂度:
冒泡排序的最优时间复杂度是 O(n), 因为如果是已经排好的顺序列让你用冒泡排序的话,只用遍历一遍,就可以跳出了。这就是标记flag的用意所在,即监视数列中是否已经排序完全。最坏时间复杂度是O(n2)。
下面这个题目就是根据冒泡思想来做的,可以帮助更好的理解。
代码如下:(此题ac代码,也可以作为冒泡排序模板代码,不过需要把注释的去掉)