冒泡排序

# 冒泡 最大的在最后面
def maopao(arr):
# 列表的长度-1=最大下标
index_max=len(arr)-1
# 外层循环
for i in range(index_max):
# 内存循环比大小
flag=False # 默认不需要交换
for x in range(index_max-i):
if arr[x]>arr[x+1]:
arr[x],arr[x+1]=arr[x+1],arr[x]
flag=True # 定义了需要交换的情况
if not flag: # 如果不需要交换
break
return arr
# 调用
if __name__ == '__main__':
test_arr=[9,2,0,1,7,9,0,5]
res=maopao(test_arr)
print(res)






# 冒泡 最大的在后面
lis=[4,3,2,1]
for j in range(len(lis)-1):#外循环了len-1次
    flag = False  #添加标记  没有交换
    for i in range(len(lis) - 1):#  内循环后找到本次最大的放到了最后
        if lis[i] > lis[i + 1]:
            lis[i], lis[i + 1] = lis[i + 1], lis[i]
        flag=True # 被标记交换了
    # 如果已经是最大的最后,那么不需要交换 flag为假
    if not flag:
        break
print(lis)

 


lis=[4,3,2,1] for j in range(len(lis)-1):#外循环了len-1次 for i in range(len(lis) - 1):# 内循环每次找到本次最大的放到了最后 if lis[i] > lis[i + 1]: lis[i], lis[i + 1] = lis[i + 1], lis[i] print(lis)

 

posted @ 2023-07-13 21:42  胖豆芽  阅读(2)  评论(0编辑  收藏  举报