冒泡排序问题,第一个值未正确排序



我已经为一个简单的数组设置了气泡排序,但有一个奇怪的问题,我不明白第一个值在输出中没有正确排序,并且由于某种原因零没有正确排序。

此外,赋值仅要求对整数列表进行排序,但是当我将字符串值插入列表中时,它会产生错误,因为>运算符只能比较整数。 出于好奇的考虑,是否有一个简单的解决方法,或者需要更强大的方法? 谢谢!

我可以通过在函数内但在 while 循环之外添加另一个 for 循环来"修复"第一个数字的排序问题,但这似乎是一个低效的补丁,可以覆盖某种逻辑错误并且仍然将问题留给零,有人可以解释为什么会发生这种情况吗?

Y=[3, 2, 1, 9, 3, 8, 3, 0, 7]
def s_list( C ):
length = len(C) - 1
ordered = False   
while not ordered:
ordered = True
for i in range(length):
if int(C[i]) > int(C[i+1]):
sorted = False
C[i], C[i+1] = C[i+1], C[i]
return C

期望值: [0, 1, 2, 3, 3, 3, 7, 8, 9] 现实: [2, 1, 3, 3, 8, 3, 0, 7, 9]

您将ordered设置为最初False,然后在 while 循环开始时设置为True。这很好,但是在 if 语句中,您将sorted设置为"False"。这是两个独立的变量。将sorted更改为ordered,它应该可以工作。

要么将所有排序更改为有序,要么将所有排序更改为已排序,您的代码将运行良好

最新更新