Ошибка при сортировке выборкой по min в списке. Происходит, если встречаются дубликаты чисел-элементов
def sorting(spisok):
for i in range(len(spisok)):
mn=spisok.index(min(spisok[i:]))
spisok[i],spisok[mn]=spisok[mn],spisok[i]
liste=[5, 3, 8, 5, 2, 1, 4, 5, 6]
sorting(liste)
По максимуму уже реализовывал. По минимуму оказалось сложнее.
При i=5
минимум должен найтись в диапазоне [spisok[5]:]
, но программа упорно присваивает имени mn - цифру spisok[5]
, в результате чего на индекс 4 ставится 8, а на 5й индекс - 5, дальше программа работает правильно.
Опять таки странно, что минимальным для программы становится максимальная цифра - 8)
Я думаю, что проблема всё-таки связана с изменениями в списке и компилятор что - то путает в процессе из-за моего кода. Подумывал о вводе копии стартовой версии списка и введение условия на проверку .count()
каждого элемента, но во-первых это какие-то костыли, а во-вторых понял, что от этого всё только запутается.
Очень хочется понять, что надо изменить в коде, чтоб работало без костылей.
P.S. Финальный результат сортировки: