首页 > 解决方案 > 冒泡排序未正确排序列表

问题描述

我写了下面的冒泡排序,为什么它不会输出正确的结果?

number = [8,6,4,5,7]
while x == True:
    for i in range(0,len(number)-1):
       if number[i]>number[i+1]:
     x == True 
     number[i],number[i+1]=number[i+1],number[i]
  x = False   
print(number)

标签: python

解决方案


  1. 您在循环x = False结束时设置while,因此循环只运行一次,将其设置在循环的第一行。
  2. 您使用x == True而不是,x = True因此您的循环将只运行一次,因为x仍然存在False
  3. 您没有x = True在循环开始之前进行设置,因此它甚至不会进入循环。
  4. 您的缩进不正确(这可能是由于在此处复制您的代码,否则它根本不会运行)。

更改所有这些将导致您的代码正常工作:

>>> x = True
>>> number = [8,6,4,5,7]
>>> while x == True:
...     x = False
...     for i in range(0,len(number)-1):
...        if number[i]>number[i+1]:
...            x = True
...            number[i],number[i+1]=number[i+1],number[i]
...
>>> print(number)
[4, 5, 6, 7, 8]

推荐阅读