冒泡排序算法
算法原理:
从头开始,依次比较相邻的两个元素,如果前者大于后者,则进行交换;否则,不交
换。重复以上的步骤。已经确定的元素除外。例如,arr=[25,45,12,16,87,46] 如下是推导过程:
第一轮:
[25,45,12,16,87,46]
第二轮:
[25,45,12,16,87,46]
[25,12,45,16,87,46]
第三轮:
[25,12,16,45,87,46]
[12,25,16,45,87,46]
[12,16,25,45,87,46]
第四轮:
[12,16,25,45,87,46]
[12,16,25,45,46,87]
原来每轮都有len(arr)-1次,如上进行了优化后,只有len(arr)-i次(i是已经确定
的元素个数)
代码如下:
#优化前
lista=[25,45,12,16,87,46]
for i in range(len(lista)-1): #轮次
for j in range(len(lista)-1): #比较次数
if lista[j]>lista[j+1]: #如果一个元素大于下一个元素
lista[j],lista[j+1]=lista[j+1],lista[j] #进行交换位置
pass
print(lista)
#优化后,不同之处在于 嵌套的 j 循环中的range里的参数多了个 减i 操作
for i in range(len(lista)-1):
for j in range(len(lista)-1-i):
if lista[j]>lista[j+1]:
lista[j],lista[j+1]=lista[j+1],lista[j]
pass
print(lista)
如有纰漏,请多指教!