Я пытаюсь реализовать сортировку вставки с помощью python. Это мой код:Ошибка с установкой Сортировка Python
def insertionSort(lst):
lstSorted = [lst[0]]
for i in range(1,len(lst)):
index = len(lstSorted)-1
while index >= 0:
if lst[i] > lstSorted[index]:
lstSorted.insert((index+1),lst[i])
else:
lstSorted.insert(index,lst[i])
index -= 1
return lstSorted
def main():
lst = [100,10,10000,1000,1000000,10000]
sortedLst = insertionSort(lst)
print(sortedLst)
main()
Это выход:
[10, 10000, 10000, 1000000, 1000, 10000, 10000, 1000000, 1000, 10000, 10000, 1000000, 10000, 10000, 10000, 1000000, 100, 10000, 10000, 1000000, 1000, 10000, 10000, 1000000, 1000, 10000, 10000, 1000000, 10000, 10000, 10000, 1000000]
Я понимаю, что есть ошибка с моей «index- = 1», но я не уверен, как это исправить , Это проблема, когда он получает:
10, 100, 10000
петля в то время как никогда не нарушается из потому, что индекс равен 0, так что цикл, пока работает снова, так что становится:
10, 10000, 100, 10000
Как я почини это?
Хотя этот код верен, он также изменяет код вопроса, чтобы изменить переданный список вместо него, а не возвращать новый список. Это может быть или не быть желательным (сравните 'list.sort' с' sorted'). – Blckknght
Я. Ты прав. Я отредактировал свой ответ на этот случай. –