关于Python的冒泡排序

原理

冒泡排序的思想: 每次比较两个相邻的元素, 如果他们的顺序错误就把他们交换位置。
比如有五个数: 12, 35, 99, 18, 76, 从大到小排序, 对相邻的两位进行比较

第一趟:
第一次比较: 35, 12, 99, 18, 76
第二次比较: 35, 99, 12, 18, 76
第三次比较: 35, 99, 18, 12, 76
第四次比较: 35, 99, 18, 76, 12
经过第一趟比较后, 五个数中最小的数已经在最后面了, 接下来只比较前四个数, 依次类推

第二趟
99, 35, 76, 18, 12
第三趟
99, 76, 35, 18, 12
第四趟
99, 76, 35, 18, 12
比较完成
冒泡排序原理: 每一趟只能将一个数归位, 如果有n个数进行排序,只需将n-1个数归位, 也就是说要进行n-1趟操作(已经归位的数不用再比较)

代码实现一

1
2
3
4
5
6
7
8
9
l1 = [8,3,2,9,7,4,5,6,1,0]
l2=[]
for i in range(0,len(l1)):
for j in range(i,0,-1):
if l1[j]<l1[j-1]:
l1[j],l1[j-1]=l1[j-1],l1[j]
for k in range(0,len(l1)):
l2.append(l1[k])
print(l2)

注意点

  1. 第一层循环可不用循环所有元素。

2.两层循环变量与第一层的循环变量相关联。

3.第二层循环,最终必须循环集合内所有元素。

代码实现二

1
2
3
4
5
6
7
8
9
l1 = [8,3,2,9,7,4,5,6,1,0]
l2=[]
for i in range(0,len(l1)-1):
for j in range(i+1,0,-1):
if l1[j]<l1[j-1]:
l1[j],l1[j-1]=l1[j-1],l1[j]
for k in range(0,len(l1)):
l2.append(l1[k])
print(l2)