首页天道酬勤冒泡算法python,冒泡排序python代码优化

冒泡算法python,冒泡排序python代码优化

张世龙 05-12 12:38 128次浏览

详细介绍泡沫排序的思路和python3代码的实现。

首先,水中同样深度的两个气泡,大气泡上浮快,首先上浮到水面,这是常识。

然后,假设左边缘为正反元素、右边缘为索引的列表中存储了一系列数据,如下所示。

为什么要竖着放呢,这样会有“起泡”的感觉。 当然,很容易就知道8是最大的,但我不认为计算机会像我们一样“看”。 一步一步地来。 首先假设第一个数(索引为0的数最大的先上浮),然后与相邻的数(索引大于0的)进行比较。 这里发现了82,所以我要修改假设。 此时,考虑8首先上浮,与相邻的大索引数比较,则找到48。 也就是说,上面的4应该比8晚上浮。 此时,需要更换位置。 从上面数是7,3,8,4,2。 此时,计算机仍然认为8是最上浮的,然后与4和2进行比较,更换位置。 更换后,从上依次为8、7、3、4、2。 这时,计算机发现了最大的泡沫8,认为是最先上浮的。 (然后只需要比较剩下的泡沫是谁先上浮的就可以了。 然后,计算机从索引0开始,n-2 (最大的一个浮出水面。 n个元素的列表必须总共循环索引0到n-1次。 每次选择剩下的气泡中最大的,最后的不需要重新比较。 每个循环需要比较的次数为n-1-I。 (I是较大的循环次数。 这里有一个可以优化的地方。 循环一次就知道一次也没被更换过。 剩下的气泡按顺序排列,表示不需要循环。 详细代码如下。

_ _ author _ _=' Allen Liu ' _ time _=' 2017/8/13 ' ' ' thisprogramusedto ' ' import random #是气泡排序函数defbundund 添加indicator=False #进行优化(表示没有交换时是规则的,结束循环(forjinrange(len(data )- 1 - i ) :# )内环每次都是无序部分中的最大循环: data[j], data [ J1 ]=放置在data上的data [ j ] indicator=trueifnotindicator : #如果说明列表未正确更换,则退出循环的break# 生成验证算法正确性的data=list(range(10 ) )有序列表random.shuffle (data ) ),然后调用shuffle函数对其进行排序print(data ) #前的bubblble

python用冒泡法排序,冒泡算法python