Сортировка выбором — это алгоритм сортировки в Python, который сортирует список, неоднократно находя минимальный элемент и помещая его в порядке возрастания. Этот процесс повторяется до тех пор, пока не будет отсортирован весь список Python.

Содержание

Логика сортировки выбором

Вот пошаговое объяснение того, как алгоритм сортировки выбором сортирует список «3, 1, 4, 5, 2» в порядке возрастания:

  • Начните со списка на Python: «3, 1, 4, 5, 2».
  • Найдите минимальный элемент в списке Python, равный 1.
  • Поменяйте местами минимальный элемент(1) с первым элементом(3), в результате чего получится «1, 3, 4, 5, 2».
  • Перейдите к следующей позиции и найдите минимальный элемент, 2.
  • Поменяйте местами минимальный элемент(2) на второй элемент(3), в результате чего получится «1, 2, 4, 5, 3».
  • Повторяйте этот процесс до тех пор, пока список не будет отсортирован полностью.
  • После применения алгоритма сортировки выбором отсортированный список будет иметь вид «1, 2, 3, 4, 5».

Пример

Здесь я продемонстрирую пошаговую процедуру сортировки выделения в Python. Я взял список температур в градусах Фаренгейта, т.е. [42, 30, 35, 53, 27, 50]

Итерация 1:

Для первой позиции в отсортированном списке последовательно передается весь список, начиная с индекса [0–6]. Первая позиция, где в настоящее время отсортировано 42, как только будет пройден весь список, станет ясно, что 27 — это наименьшее значение. Таким образом, замените 42 на 27. После первой итерации 27 появится в первой позиции отсортированного списка, например [27, 30, 35, 53, 42, 50].

Сортировка выбором в Python

Итерация 2:

На второй позиции, где присутствует 30, это уже второе наименьшее значение в списке. Следовательно, он окажется на втором месте в списке, таким образом, никакого обмена значениями не происходит.

Итерация 3:

Аналогично, на третьей позиции, где присутствует 35, это уже третье наименьшее значение в списке. Следовательно, он окажется на третьем месте, и никакой смены значений не произойдет.

Как реализовать сортировку

Итерация 4:

На четвертой позиции присутствует 53, следовательно, передайте остальную часть списка и найдите четвертое значение. При прохождении 42 оказалось четвертым наименьшим значением, которое должно появиться на четвертом месте в списке Python, таким образом, замените 42 на значение, присутствующее в четвертой позиции(53).

Как найти четвертое значение

Итерация 5:

Аналогичным образом передайте остальную часть массива для пятой позиции и найдите пятое наименьшее значение в списке. Поскольку 50 — это пятое наименьшее значение, оно будет помещено на пятую позицию.

Пятое наименьшее значение в списке

Итерация 6:

Наконец, наибольшее значение, присутствующее в списке, автоматически помещается в последнюю позицию в списке. Полученный список представляет собой окончательный отсортированный массив.

Последняя позиция в списке

Вот полная программа Python для сортировки выбором.

def selectionSort(unsorted_list, size):
    
    for i in range(size):
        min_index = i
 
        for j in range(i + 1, size):
           
            if unsorted_list[j] < unsorted_list[min_index]:
                min_index = j
       
       (unsorted_list[i], unsorted_list[min_index]) =(unsorted_list[min_index], unsorted_list[i])
 
temperatures = [42, 30, 35, 27, 53, 50]
size = len(temperatures)
print('The unsorted list is:',temperatures)
selectionSort(temperatures, size)
print('The list after sorting in ascending order by selection sort is:')
print(temperatures)

Вы можете увидеть результат после выполнения кода Python.

Результат сортировки

С использованием функции min()

Вы также можете выполнить сортировку выбором в Python, используя функцию min().

Python предоставляет функцию min() для возврата элемента с наименьшим значением или элемента с наименьшим значением в итерации.

Вот полный код Python для сортировки выбором с использованием функции min() в Python.

def selection_sort_min(arr):
    n = len(arr)
    for i in range(n):
        min_index = arr.index(min(arr[i:]))
        arr[i], arr[min_index] = arr[min_index], arr[i]

list_of_number = [64, 25, 12, 22, 11]
selection_sort_min(list_of_number)
print("Sorted array using min function:", list_of_number)

Выход:

Sorted array using min function: [11, 12, 22, 25, 64]

На снимке экрана ниже показан результат работы кода Python для сортировки выбором с использованием функции min().

С использованием функции min()

С использованием функции max()

Это еще один метод Python для сортировки выбором с использованием функции max(), которая возвращает элемент с наибольшим значением или элемент с самым высоким значением в итерации.

Это полный код Python для сортировки выбором с использованием функции max().

def selection_sort_max(arr):
    number = len(arr)
    for i in range(number-1, -1, -1):
        max_index = arr.index(max(arr[:i+1]))
        arr[i], arr[max_index] = arr[max_index], arr[i]

list_of_numbers = [94, 29, 12, 62, 101]
selection_sort_max(list_of_numbers)
print("Sorted array using max function:", list_of_numbers)

Выход:

Sorted array using max function: [12, 29, 62, 94, 101]

На скриншоте ниже показан результат после выполнения программы Python.

С использованием функции max()

Заключение

Я надеюсь, что эта статья о Python предоставила полезную информацию и дает четкое представление о том, как написать программу для сортировки выбором. Я рассказал, что это такое, и логику сортировки в Python. Также я объяснил 3 примера: использование циклов с условными операторами и функциями min() и max().

Добавить комментарий