- 冒泡排序
do=[2, 15, 5, 9, 7, 6, 4, 12, 5, 4, 2, 64, 5, 6, 4, 2, 3, 54, 45, 4, 44]
def maopao(do):
false = 0
true = 1
# i代表i之前的元素都有序
for i in range(0,len(do)):
# flag代表本次冒泡中是否发生交换
flag = false
for j in range(i,len(do)-1):
temp = []
if do[j] > do[j+1]:
temp = do[j]
do[j] = do[j+1]
do[j+1] = temp
flag = true
if flag == false:
print('dsds')
return do
在写代码之前有两个问题:
- 何时可以终止排序?
解答:设置一个标签flag,用来看是否本次排序是否发生交换,当经过一次排序后,如果flag不发生变化也就意味着没有发生交换。 - 如何开始下一趟排序?
解答:i,j 结合判断。
重点:flag 和 i,j 的设置
flag:用来看是否本次排序是否发生交换
i :表示在i之前的元素都已经有序。