Сортировка выбором не работает
Имеется алгоритм сортировки выбором
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]