python 实现冒泡排序 您所在的位置:网站首页 pythonfor循环排序 python 实现冒泡排序

python 实现冒泡排序

2023-04-01 15:27| 来源: 网络整理| 查看: 265

看了许多python的冒泡排序,都有许多问题,今改正:

import random if __name__ == '__main__': l = [] count = int(input('输入排序数:')) for i in range(count): l.append(random.randint(1,100)) len_l = len(l) for i in range(0, len_l): # 0 1 2 3 4 # 添加flag,提前终止 flag = False for j in range(i, len_l-1): # 0 1 2 3 if l[j] > l[j+1]: k = l[j+1] l[j+1] = l[j] l[j] = k                 print(l) flag = True if not flag: break print("最终结果:", l)

许多人这样子书写都会有一些小瑕疵,请看:        

原因是j的移动不会再返回,导致若中间数有较大的被弹到前面,就无法检测再排序。

改正: 

方法一:第二次的循环每次都要从0开始!

j = 0 while j < len_l -1: if l[j] > l[j+1]: k = l[j+1] l[j+1] = l[j] l[j] = k flag = True j += 1

方法二:j 从大到小:

for i in range(len_l-1): # 0 1 2 3 4 # 添加flag,提前终止 flag = False for j in range (len_l - 1 - i): if l[j] > l[j+1]: k = l[j+1] l[j+1] = l[j] l[j] = k flag = True

完美解决问题。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有