python 实现冒泡排序 | 您所在的位置:网站首页 › pythonfor循环排序 › python 实现冒泡排序 |
看了许多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 实验室设备网 版权所有 |