排序算法(1):5分钟理解冒泡排序算法并用Python实现

createh52个月前 (05-03)技术教程27

【上期我们刚掌握算法复杂度,这期讲到的冒泡排序算法,它的算法复杂度是怎样的呢?如何简单理解其原理并用代码实现呢?让我们一起用5分钟时间看看吧!】

冒泡排序算法

一、算法原理

冒泡排序(Bubble Sort)是一种常见的排序算法,它需要排序的元素列表,依次比较两个相邻的元素,如果顺序(如从大到小或从小到大)错误就交换它们的位置。重复地进行直到没有相邻的元素需要交换,则元素列表排序完成。先来看一张gif动图:

可能看动图很多人都已经能理解了,如果感觉一下get不到也没关系,在第二部分还会放具体的步骤,更直观清晰。

二、步骤拆解

以列表 [1, 7, 3, 9 2] 进行升序排列为例,列表的初始状态如下图:

1. 从列表的开头,比较相邻的两个元素,如果第一个值比第二个值大则交换。1于7则不需要交换:

2. 向列表的结尾方向“走访”,比较第二组相邻的元素(第二个和第三个)。因7大于3则进行交换:

3. 继续“走访”,比较第三组相邻的元素(第三个和第四个)。7小于9则不需要交换:

4. 继续“走访”,比较第四组相邻的元素(第四个和第五个)。因9大于2则进行交换:

5个数据经过4步,找出了5个数据中的最大值置于最末端,这就是第一轮冒泡;在下一轮“冒泡”中,不需要再将9进行比较,所以需要比较的数据为4个,可以3步找出4个数据中的最大值,依此类推……最终得到排序结果如下:

三、代码实现

可以看到上述过程是不断的循环,因此能想象代码中大概率需要用到for循环,故冒泡排序算法(升序)的Python代码如下:

运行结果为:

怎么样,是不是感觉很简单?留一个小思考题:可以想想冒泡排序的算法复杂度,包括时间复杂度和空间复杂度分别是多少,下期也会放答案。

【今天就讲到这里,每天进步一点点,足矣】

相关文章

冒泡排序——C语言(冒泡排序c语言什么意思)

冒泡排序的图示:假设有一个数组 [5, 3, 8, 6, 2],逐步冒泡排序的过程:第一轮:比较 5 和 3,5 > 3,交换 → [3, 5, 8, 6, 2]比较 5 和 8,5 <...

基于C语言的冒泡排序法(c语言冒泡排序思路)

冒泡排序法:对数组中的n个整数类型的数据元素(a[0]~a[n-1])进行排序。void BubbleSort(int a[],int n){ int i,j,flag=1; int temp; fo...

一文透彻解析冒泡排序(冒泡排序有几种方法)

谈一谈冒泡排序看到很多人谈算法题,上来就是一段代码,你去看去吧,自己悟去吧。心塞有的题目老长时间就是不理解。。。本文分析一下啥是冒泡排序?排序就是一组数字,按照顺序排列(从小到大) ,冒泡排序是排序的...

Python实现冒泡排序(python冒泡排序列表)

''' 冒泡排序原理:比较列表中相邻的两个元素大小,如果第2个元素比第1个元素大,就交换它俩的位置,从列表的开始到结尾, 依次对每一组相邻的2个元素都进行比较,这样最大的元素就...

十大经典排序(2)——冒泡排序(冒泡排序和简单排序)

什么是冒泡排序冒泡排序(Bubble Sort)是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点点向数组的一侧移动。冒泡排序的原理每一趟只能确定将一个数归...

Scratch少儿编程,冒泡排序法(冒泡排序scl程序)

冒泡排序是8大基础排序里面最为基础的一种。从数组第一个数开始,和第二个开始比较。然后根据比较结果开始交换位置。直到最后从小到大,或者从大到小的排列。狭义上面的冒泡,当然是从小到大的排大。因为泡泡总是较...