Я пытаюсь узнать больше об алгоритме сортировки вставки, написав небольшой скрипт, однако я застрял.Вставка Сортировка: Неверный вывод
Все работает отлично, за исключением того, что один номер отображается несколько раз.
Мой код:
#
# Insertion Sort
#
def _ord(l):
lst=[]
for k in l:
if not lst:
lst.append(k)
continue
for a,b in enumerate(reversed(lst)):
if k <= lst[a]:
lst.insert(a,k)
if a == len(lst)-1:
lst.append(k)
return lst
if __name__ == '__main__':
l = [3,2,4,6,5,1]
print _ord(l)
Выход:
[1, 1, 1, 1, 1, 2, 3, 4, 5, 6]
Побочное примечание: При этом в качестве учебного упражнения абсолютно нормально, я должен отметить, для производства кода, вы хотите использовать '' list.sort'/sorted' (сортировать целую кучу элементов) или [модуль 'bisect'] (https://docs.python.org/3/library/bisect.html) (чтобы вставить отдельные элементы в уже отсортированный« список »). Для общих целей сортировки, в основном ничто, которое вы пишете в Python, не может побить встроенные модули (которые на ссылочном интерпретаторе C ускоряются). – ShadowRanger