Python|概述“冒泡算法”
引言在生活中,水中的气泡常常冒出水面,似乎它们会自动排序,其实在算法排序中,也有着一种类似的算法,这就是今天要引入的算法-“冒泡算法”。冒泡算法,顾名思义,就是保证每个数据像水中的水泡一样,一点一点的向前方挪去,而“不同大小的水泡”的顺序不是随机的。问题描述冒泡排序是一种计算机科学领域的较简单的排序算法。原理如下:1. 先比较相邻的元素。如果第一个比第二个大,就交换他们两个。2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3. 重复以上2的步骤,直到没有元素可以进行比较。注意,冒泡排序的平均时间复杂度为O(n²)例如:要比较排序数组:[10,1,35,61,89,36,55](升序)首先首次排序,10比1大,因此交换位置,,之后10和35比较,10小于35,不交换位置,35与61比较,前者小于后者,不交换位置,61和89比较,61小于89,不交换位置,以此类推,直到完成首次排序,数组顺序为[1,10,35,61,36,55,89],发现数组顺序仍然不对,因此进行第二次排序:1和10比较,1小于10,不交换位置,10和35比较,10小于35,不交换位置,以此类推,最终得到数组排序为[1,10,35,36,55,61,89],发现此数组没有了可以交换的元素,完成排序。解决方案再对上面的例子进行解释,以数组升序为例,首先相邻元素进行比较,之后再继续对每一对相邻元素做同样的工作,列如,1和10比较后,应该让后者与后面的元素进行比较,完成首次排序,常常数组顺序仍然不对,需要2-3次排序才能完成排序工作。其python程序思想大致为:载入数组,def 开始函数定义,在这里把函数命名为bubbleSort,对数组元素进行遍历,进行2个循环。对数字顺序排序,完成后打印。代码清单def bubbleSort(q):n = len(q)for i in range(n):for j in range(0, n-i-1):if q[j] > q[j+1] :q[j], q[j+1] = q[j+1], q[j]q = [10,1,35,61,89,36,55]bubbleSort(q)print ("排序后的数组为:")for i in range(len(q)):print ("%d" %q[i])结语本文简单的介绍了冒泡排序是什么,其核心步骤是什么,并举了个例子对冒泡排序进行进一步的阐述。实习编辑:王晓姣作者:文裕龙稿件来源:深度学习与文旅应用实验室(DLETA)