Ошибка при сортировке выборкой по 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)

введите сюда описание изображения

динамические изменения в списке в диапазоне от [soisok[i]:]

Я думаю, что проблема всё-таки связана с изменениями в списке и компилятор что - то путает в процессе из-за моего кода. Подумывал о вводе копии стартовой версии списка и введение условия на проверку .count() каждого элемента, но во-первых это какие-то костыли, а во-вторых понял, что от этого всё только запутается.

Очень хочется понять, что надо изменить в коде, чтоб работало без костылей.

P.S. Финальный результат сортировки:

введите сюда описание изображения


Ответы (0 шт):