python算法与数据结构-冒泡排序算法
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
冒泡排序(英语: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]
"""
参考资料:
网上的教程