冒泡排序
我们假设要将一列数从小到大排序:
1.我们首先指向最左边两个相邻的数
2.比较两个数的大小,如果左边的数大于右边的数,则交换两数位置,如果左边的数小于右边的数,则不变
3.接着向右移一格继续如上操作,当我们将“指针”移到最右边时,最大的数已经被“冒”到了最右边(就像冒泡一样)
4.接着,我们着指向最左边,重复将最大的数“冒”到最右边,直到排序完成
Python代码实现:
def bubble_sort(l):
for i in range(len(l)):
for j in range(len(l)-1): # 因为后面交换时,涉及到l[j+1],所以此时要减1
if l[j] > l[j + 1]:
l[j], l[j + 1] = l[j + 1], l[j]
return l
或者这样写:
def bubble_sort(l):
flag = False # 定义flag来表示是否已经排列好
while not flag:
flag = True
for i in range(len(l) - 1):
if l[i] > l[i + 1]:
l[i], l[i + 1] = l[i + 1], l[i]
flag = False # 若此条件判断成立,则并未排序好,将flag变为False
return l
本文为自己学习时所写的小笔记,水平有限,内容仅供参考,如有错误,欢迎指正