冒泡排序算法(含题目推荐 )

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

冒泡排序算法是排序算法里面基础算法之一,其理解简单,编程难度小,但是对于初学者来说,理解还是需要认真静下心来手动推演。

其实冒泡排序算法的核心思想就是:每一次从头开始遍历,比较相邻的数,然后把大的数向后面移动(以升序为例),所以每一次遍历,都可以把目前最大的数移到后面,后面的数不需要操作,所以每次遍历的终止条件是 j 从 1 到 i-1;i表示遍历的次数,i+1 到n表示已经排序好的数。

时间复杂度:

    冒泡排序的最优时间复杂度是 O(n), 因为如果是已经排好的顺序列让你用冒泡排序的话,只用遍历一遍,就可以跳出了。这就是标记flag的用意所在,即监视数列中是否已经排序完全。最坏时间复杂度是O(n2)。


下面这个题目就是根据冒泡思想来做的,可以帮助更好的理解。

代码如下:(此题ac代码,也可以作为冒泡排序模板代码,不过需要把注释的去掉) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值