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

时间:2019-08-25 17:27:18

标签: python sorting bubble-sort

我为一个简单的数组设置了冒泡排序,但是有一个奇怪的问题,我不知道第一个值在输出中未正确排序的位置,并且由于某些原因零也无法正确排序。

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

我可以通过在函数内但在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]

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您已将所有排序更改为有序,或将所有排序更改为有序,您的代码将正常运行