伪代码
1.比较相邻的元素(a,b)
2.当a>b时,交换两个元素的位置
3.重复第一步和第二步,直到我们到达最后一个元素
这样最大的值就到达了列表的最底端
4.然后从N中逐步减1,并每次重复123的操作,直到N=1
说明
这里有两层的嵌套循环:
1.外层循环N(列表的长度)次
2.内层循环则变得越来越短
i | N |
---|---|
0 | N-1 |
1 | N-2 |
… | … |
N-2 | 1 |
N-1 | 0 |
所以总的迭代次数是
(N−1)+(N−2)+...+1+0=N∗(N−1)2
(
N
−
1
)
+
(
N
−
2
)
+
.
.
.
+
1
+
0
=
N
∗
(
N
−
1
)
2
复杂度为
O(N2)
O
(
N
2
)
python代码实现
def bubble_sort(alist):
for j in range(len(alist)-1,0,-1):
for i in range(j):
if alist[i] > alist[i+1]:
alist[i], alist[i+1] = alist[i+1], alist[i]
参考文献: