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

冒泡排序是入门级排序算法,通过每次遍历将最大(或最小)的元素逐步移动到末尾。最优情况下时间复杂度为O(n),最坏情况为O(n^2)。理解冒泡排序的关键在于其逐步交换的原理。文中包含一道练习题及AC代码,有助于深入理解冒泡排序算法。
最低0.47元/天 解锁文章
692

被折叠的 条评论
为什么被折叠?



