基于比较冒泡排序-时间复杂度O(n^2)

冒泡排序是一种简单的排序算法,通过相邻元素间的比较和交换,逐步将较大或较小的元素移动到正确位置。文章介绍了冒泡排序的基本原理,展示了其优化方法,并分析了其在最好、最坏和平均情况下的时间复杂度,平均时间复杂度为O(n^2)。此外,还探讨了冒泡排序作为原地排序算法的稳定性及其在数据规模小且接近有序场景下的应用。
摘要由CSDN通过智能技术生成

冒泡排序(Bubble Sort)

只操作相邻的两个数据,每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足让它两互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。

eg:对于一组数据 4、5、6、3、2、1

第一次冒泡的过程:经过了 5 次比较,此时 3 已经在正确的位置了,即每一次冒泡在至少有一个位置会调整到最终的位置,对于 6 个数据最多 6 次冒泡完成所有排序
在这里插入图片描述
六次冒泡后的结果:其实这个是可以优化。当某次冒泡操作已经没有数据交换时候,说明已经达到完全有序,不需要执行后续的冒泡操作。
在这里插入图片描述
优化:由于 n 个数据完成排序的次数是小于等于 n 的,所以当在小于 n 次可以完成,那么再冒泡就会多余。所以可以设置一个标志位,当某次冒泡扫描完所有的数后没有发生数据交换说明此时已经排好,直接跳出即可。
在这里插入图片描述
详细代码:

//冒泡排序,n表示数组大小
public void bubbleSort(int[] arr,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值