Алгоритм сортировки выбором — один из самых понятных способов упорядочить массив. Он многократно находит минимальный элемент в массиве и перемещает его в начало. Затем алгоритм переходит к поиску минимального элемента в оставшейся части массива и повторяет этот процесс, пока весь массив не будет упорядочен.
a = [...]
for i in range(len(a)): # Нужно поместить минимум из a[i:] в позицию a[i]
min_idx = i # Индекс минимального элемента
for j in range(i + 1, len(a)): # Находим индекс минимального элемента
if a[j] < a[min_idx]: # Если встретится элемент меньше текущего
min_idx = j # Обновляем индекс минимального элемента
a[i], a[min_idx] = a[min_idx], a[i] # Меняем a[i] и a[min_idx] местами
print(a)
На каждом шаге алгоритм извлекает минимум из оставшейся части массива и меняет местами текущий элемент и найденный минимум, используя их индексы. Если текущий элемент уже является минимальным, тогда фактически происходит обмен одного и того же элемента, и массив не меняется.
Алгоритм сортировки выбором каждый раз ищет минимальный элемент и меняет текущий индекс на индекс этого минимума. То есть на каждой итерации необходимо просмотреть всю неотсортированную часть массива (функция min по сути обходит элементы последовательно, чтобы найти наименьший). Таким образом, совокупное время работы составляет n итераций, каждая из которых выполняет около n сравнений, что в сумме даёт операций.
Давайте проследим, как алгоритм работает на нескольких массивах: