У меня есть две версии реализации INSERTION SORT; Я думаю, , которые эквивалентны, но второй возвращает неправильный отсортированный список. Это первый один:Вставка внедрения (Ошибка), Python
def insertionSort(A):
for j in range(1,len(A)):
key = A[j]
i = j
while i>0 and A[i-1]>key:
A[i] = A[i-1]
i -= 1
A[i] = key
это второй один:
def insertionSort(A):
for j in range(1,len(A)):
key = A[j]
i = j-1
while i>0 and A[i]>key:
A[i+1] = A[i]
i -= 1
A[i+1] = key
Я проверил эти два алгоритма с этим C массива
C = [54,26,93,17,77,31,44,55,20]
insertionSort(C)
print(C)
В первом случае мой массив правильно отсортирован; во втором случае мой результат:
[54, 17, 20, 26, 31, 44, 55, 77, 93]
Второй случай происходит от псевдокода на моей школе книга. Почему он не работает правильно?
Зачем изобретать колесо - Подсказка в исходном коде для bisect ... https://docs.python.org/2/library/bisect.html – Merlin