python - 冒泡排序未正确排序列表
问题描述
我写了下面的冒泡排序,为什么它不会输出正确的结果?
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)
解决方案
- 您在循环
x = False
结束时设置while
,因此循环只运行一次,将其设置在循环的第一行。 - 您使用
x == True
而不是,x = True
因此您的循环将只运行一次,因为x
仍然存在False
。 - 您没有
x = True
在循环开始之前进行设置,因此它甚至不会进入循环。 - 您的缩进不正确(这可能是由于在此处复制您的代码,否则它根本不会运行)。
更改所有这些将导致您的代码正常工作:
>>> 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]
推荐阅读
- python - 如何不将图像保存在 PIL 中?
- bigdata - 通过 Nifi 将 XML 数据加载到 Snowflake 阶段表中
- python - Python - 并行化嵌套在 for 循环中的函数调用
- marklogic - MarkLogic 升级回滚过程
- java - 尝试修改私有静态字段时出现 IllegalAccessException
- xero-api - Xero - Payroll AU API | 如何在 Payroll AU API 中获取工资期?
- c++ - qt QFlags:有符号值超出枚举常量的范围
- ubuntu - 将字符串转换为整数 Ansible
- javascript - 如何更改日期输入的 innerHTML 以使该值与当前用户输入的值匹配?
- angular - Angular 代理配置不适用于多个 API