首页天道酬勤python双向冒泡排序,python冒泡算法和排序算法

python双向冒泡排序,python冒泡算法和排序算法

张世龙 05-12 12:35 76次浏览

Python通过鼓泡排序一、冒泡排序简介

“气泡排序”(Bubble Sort )是一种常见的排序算法,相对简单。

气泡排序重复需要排序的元素列表,或者按顺序比较两个相邻元素,如果顺序错误,则交换它们的位置。 重复执行直到相邻元素不再需要交换,即可完成元素列表的排序。

在气泡排序中,值最大(或最小)的元素通过交换逐渐“浮动”到元素列表的“顶部”。 因为像“鼓泡”,所以被称为鼓泡排序。

二、冒泡排序原理

泡沫排序的原理如下。

1 .比较相邻的两种元素。 如果第一个大于第二个,交换他们的位置(按升序排列,按降序排列则相反)。

2 .从列表的开头到结尾,按顺序比较每对相邻的。 这样,最大值的元素通过更换“鼓泡”到达列表末尾,第一个“鼓泡”完成。

3 .重复前面的步骤,从列表开头开始按顺序继续比较相邻元素。 已经“冒泡”出来的要素可以不比较(可以比较到最后,已经“冒泡”出来后面的要素比较也不需要更换,不比较也可以减少步骤)。

4 .继续从列表中进行比较,每次比较都会有一个因素“冒泡”成功。 在每个倒圆角中需要比较的元素数减少,直到只有一个元素“冒泡”为止。 如果没有需要比较的元素对,则列表排序完成。

让我们按升序排列列表[10、17、50、7、30、24、27、45、15、5、36、21]。 的初始状态如下图所示。

要按升序排序,请将较大的元素按顺序“冒泡”到列表末尾。

1 .比较列表开头的两个相邻元素,如果第一个值大于第二个值,则进行交换。 10小于17,不需要更换。

2 .向列表末尾方向“访问”,比较第二组相邻元素(第二个和第三个),如果从小到大则更换。 17小于50,不需要更换。

3 .继续“访问”,比较第三组相邻因素,从小到大进行交换。 50比7大,需要更换。

4 .更换顺序错误的要素位置。 交换50和7的位置。

5 .“访问”到最后,第一个“冒泡”结束后,值最大的要素“冒泡”来到列表末尾。 50“起泡”到了名单的最后。

以下“鼓泡”不需要比较50,而是需要将要比较的元素数量减少1。

6 .从列表开头,重复以下“鼓泡”: 每次“冒泡”操作都将完成整个列表的排序,直到只有一个元素需要比较,而没有一对元素需要比较。 排序结果如下图所示。

三、Python实现冒泡排序

# coding=utf-8 def bubble _ sort (array ) :forIinrange(1,len ) array ) : for j in range(0) 0,len(array ) array[j 1]=array[j 1],array [ j ] returnarrayif 17、50、7、30、24、27、45、15、5、36、21 ) print (buble _ble )

[5、7、10、15、17、21、24、27、30、36、45、50]在代码中,I表示第几次“冒泡”,j表示“访问”目的地的元素索引。 在每个“冒泡”中,j必须从列表开头“访问”到len (阵列)- i的位置。

四、冒泡排序的时间复杂度和稳定性

1 .时间复杂性

没有特别说明的时候,一般计算最坏时间的复杂性。

在泡沫排序中,最坏的情况是要素列表的初始状态完全按相反顺序排列,需要n-1次“泡沫”,每一次“泡沫”需要n-i次的比较和交换操作。 的平均值为n/2,时间复杂度为t(n )=n(n-1 )/2,乘以每个操作的步数(常数,不影响大的o符号法),因此通过鼓泡进行排序的时间复杂度为o(n^2)。

2 .稳定性

排序算法的稳定性是指在元素列表中有相等元素的情况下,相等元素的相对顺序是否一定,如果相对顺序一定,则排序算法稳定,反之亦然。

在气泡排序中,每次比较两个元素时,只有在元素大小顺序错误时才会进行交换。 如果元素列表中有两个相等的元素,则它们最终总是相邻的,但在比较时不交换,相对顺序不变。 泡沫排序是一种稳定的排序算法。

vmware,虚拟机怎么修改密码