2016-05-10 6 views
1

Я пробовал этот код с этого вопроса - Python insertion sort. Я немного изменил код, избавился от eval().Вставка сортировки в Python не работает

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) 

Это не работает для нескольких слишком много тестовых случаев.

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

Я также попытался с некоторыми отрицательными числами. Код не работает. Почему это так?

ответ

1

Это потому, что x - это список строк, а не целых чисел. Вы можете исправить свой входной пример, разместив этот код перед sort_numbers:

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

Оригинальный результат:

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

Результат после добавления этой строки:

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

Обратите внимание, что в настоящее время Список, показанный с print s, не содержит элементов su rrounded by quotes

+0

Хорошо, спасибо! :) –