2016-05-10 16 views
1

Ich habe diesen Code aus dieser Frage versucht - Python insertion sort. Ich habe den Code ein wenig modifiziert, habe die eval() losgeworden.Insertion Sortierung in Python funktioniert nicht

def sort_numbers(s): 
    for i in range(1, len(s)): 
     val = s[i] 
     j = i - 1 
     while (j >= 0) and (s[j] > val): 
      s[j+1] = s[j] 
      j = j - 1 
     s[j+1] = val 
    print s 

x = raw_input("Enter numbers to be sorted: ").split() 
sort_numbers(x) 

Es funktioniert nicht für ein paar zu viele Testfälle.

In: 1001 101 20 24 2000 Out: 1001 101 20 2000 24

habe ich auch mit einigen negativen Zahlen versucht. Der Code funktioniert nicht. Warum ist das so?

Antwort

1

Dies liegt daran, x ist eine Liste von Zeichenfolgen und keine ganzen Zahlen.

x = [ int(v) for v in x ] 

Original-Ergebnis:

Enter numbers to be sorted: 1001 101 20 24 2000 
['1001', '101', '20', '2000', '24'] 

Ergebnis nach dieser Zeile hinzufügen: Sie können Ihre Eingabe Beispiel, indem Sie diesen Code vor sort_numbers korrigieren

Enter numbers to be sorted: 1001 101 20 24 2000 
[20, 24, 101, 1001, 2000] 

Beachten Sie, dass jetzt Die von print s angezeigte Liste hat keine Elemente su umringt von Zitaten

+0

Okay, danke! :) –

Verwandte Themen