Сортировка выбором не работает

Имеется алгоритм сортировки выбором

def findMin(array):
    min = array[0]
    min_index = 0
    for i in range(len(array)):
        if array[i] < min:
            min_index = i
    return min_index

def sort(array):
    sorted_array = []
    for i in range(len(array)):
        index = findMin(array)
        sorted_array.append(array.pop(index))
    return sorted_array

array = [2, 100, 3, 7, 100, 4, 9568]

array = sort(array)
print(array)

Однако я получаю неожиданный результат

[2, 4, 7, 3, 100, 100, 9568]

В чем проблема?


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

Автор решения: Danis

в функции findMinпосле нахождения меньшего элемента вы не обновляете переменную min

def findMin(array):
    min = array[0]
    min_index = 0
    for i in range(len(array)):
        if array[i] < min:
            min_index = i
            min = array[i]
    return min_index
→ Ссылка
Автор решения: qeqolla

используй лучше такой метод сортировки

def sort(array):
    for i in range(len(array) - 1):
        m = i
        j = i + 1
        while j < len(array):
            if array[j] < array[m]:
                m = j
            j = j + 1
        array[i], array[m] = array[m], array[i]
→ Ссылка