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

【上期我们刚掌握算法复杂度,这期讲到的冒泡排序算法,它的算法复杂度是怎样的呢?如何简单理解其原理并用代码实现呢?让我们一起用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语言排序方法——冒泡排序详解!你学会了吗?

冒泡排序法的基本思路为:每次将相邻的两个数比较,将小的调在前面。举个例子,如果有6个数:9,8,5,4,2,0。第一次先将最前面的两个数9和8对调。第二次将第2个数和第3个数对调(9和5)······...

冒泡排序(冒泡排序python)

冒泡排序(Bubble Sort)是一种简单的排序算法,其基本思想是对待排序的元素从前向后依次比较相邻的两个元素,如果顺序不对则交换它们的位置,轮比较下来,最大的元素就会“冒泡”到数组的末尾重复这个过...

冒泡排序——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...

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

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

常见的三种排序(冒泡排序、插入排序、选择排序)

冒泡排序什么是冒泡排序?百度百科解释:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要...