python中没有预期的冒泡排序问题

时间:2014-10-30 02:32:29

标签: python sorting

我的代码有问题,冒泡排序无法正常工作。

numero = raw_input('Ingrese los numeros a ordenar:')
numeros = []

while numero != '': #hit enter to finish the number input
    numeros.append(numero)
    numero = raw_input()

def burbuja(temporal):
    tamanio = len(temporal) -1
    ordenado = False
    while not ordenado:
        ordenado = True
        for i in range(tamanio):
            if temporal[i] > temporal[i+1]:
                ordenado = False
                temporal[i], temporal[i+1] = temporal[i+1], temporal[i]

burbuja(numeros)
print 'Los numeros ordenados son:', numeros

问题在于我插入这样的数字

'22', '13, '2', '4'

我的预期结果是

'2', '4', '13', '22'

但我明白了:

'13', '2' ,'22', '4'

我希望你能帮助我解决我的问题

谢谢:)

2 个答案:

答案 0 :(得分:0)

您只需将数字与下一个数字进行比较。在您的示例中,您只需将“22”与其下一个数字('13')进行比较,而不是将所有其他数字('13','2','4')进行比较。所以你只需用'13'交换'22'。

答案 1 :(得分:0)

您可以使用此代码:

def bubble(L):
    length = len(L)
    while length > 0:
        for i in range(length - 1):
            if L[i] > L[i+1]:
                L[i], L[i+1] = L[i+1], L[i]
        length -= 1
    return L