【小算法】冒泡排序

本文介绍了冒泡排序的基本思想和操作过程,通过图例和Python代码演示了冒泡排序如何将数组从小到大排序。文章还解释了为什么j的取值是size - i - 1,并分享了一个无需额外变量的交换技巧。冒泡排序的时间复杂度为O(n^2)。
摘要由CSDN通过智能技术生成

冒泡排序是大多学人学到的第一个排序,教科书上在众多的排序算法中选择它作为示例,我想还是因为它够简单,易于理解吧。

假设有下面一组数据,需要从小到大升序排列。

冒泡排序的算法是

1. 从左到右,依次比较相邻两个位置的数据,如果左边的数值较大,就交换它们,这样在单轮操作中,最大的数会交换到最右边。
2. 重复多轮操作,重复的次数和数组的长度相同。
3. 排序完成。

冒泡排序的过核心思想就是 交换

通过交换,可以保证每一轮操作,将最大的数挪到最右边,这有点像池塘里面水泡从淤泥中浮出水面的过程,所以它叫冒泡排序。

以图例来说明就非常简单了。

假设我们要对数组[7 1 12 6]
排序
图例示意:

我们先看每一轮的操作

在这里插入图片描述
用红框标出每次两两交换的数据,可以看到比较到最后,12 排到了最上面的位置。

我们再看整个过程:
在这里插入图片描述

每一次都有数据冒泡到最右边,最后一次操作,比较时已经不再需要做交换了。

Python 代码演示:


def bubble_sort(srcArr):

    size = len(srcArr)

    for i in 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

frank909

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值