对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
冒泡排序(英语:bubble sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢”浮”到数列的顶端。
代码如下所示:
# coding:utf-8
def bubble_sort(alist):
"""冒泡排序"""
n = len(alist)
#第一种不考虑效率的排序
# for j in range(0,n-1):
# # for i in range(0,n-1):
# # if alist[i] > alist[i+1]:
# # alist[i],alist[i+1] = alist[i+1],alist[i]
#第二种考虑效率的排序
for j in range(n-1): #下面一行跟这行写法一样
#for j in range(0, n - 1):
#print(n-1) # 输出8个8
#print(j) #输出从0到7 这个j值等于0,对应i值的01234567
#这个j值等于1,对应i值的0123456
count = 0
for i in range(0,n-1-j):
#print(i) #01234567 0123456 012345依次类推 01 0
if alist[i] > alist[i+1]:
alist[i],alist[i+1] = alist[i+1],alist[i]
count += 1
# print(i)
# return
if 0 == count:
return
if __name__ == "__main__":
li = [54,26,93,17,77,31,44,55,20]
print(li)
bubble_sort(li)
print(li)
"""
res:
[54, 26, 93, 17, 77, 31, 44, 55, 20]
[17, 20, 26, 31, 44, 54, 55, 77, 93]
"""
参考资料:
网上的教程