Сортировка выбором — это алгоритм сортировки в Python, который сортирует список, неоднократно находя минимальный элемент и помещая его в порядке возрастания. Этот процесс повторяется до тех пор, пока не будет отсортирован весь список Python.
- Логика сортировки выбором
- Пример
- С использованием функции min()
- С использованием функции max()
- Заключение
Логика сортировки выбором
Вот пошаговое объяснение того, как алгоритм сортировки выбором сортирует список «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].
Итерация 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().
С использованием функции 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.
Заключение
Я надеюсь, что эта статья о Python предоставила полезную информацию и дает четкое представление о том, как написать программу для сортировки выбором. Я рассказал, что это такое, и логику сортировки в Python. Также я объяснил 3 примера: использование циклов с условными операторами и функциями min() и max().