0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: python, алгоритмы, пайтон, сортировка выборкой</p>
1
<p>Теги: python, алгоритмы, пайтон, сортировка выборкой</p>
2
<p><strong>Сортировка выборкой</strong>- известнейший алгоритм, сегментирующий список на 2 части: несортированную и сортированную. При этом элемент с минимальным значением удаляется из второго списка, добавляясь в первый.</p>
2
<p><strong>Сортировка выборкой</strong>- известнейший алгоритм, сегментирующий список на 2 части: несортированную и сортированную. При этом элемент с минимальным значением удаляется из второго списка, добавляясь в первый.</p>
3
<p>Однако на деле вам не надо создавать новый список для сортированных элементов. В качестве него подойдёт и крайняя левая часть списка. То есть после нахождения наименьшего элемента он меняется с первым элементом местами.</p>
3
<p>Однако на деле вам не надо создавать новый список для сортированных элементов. В качестве него подойдёт и крайняя левая часть списка. То есть после нахождения наименьшего элемента он меняется с первым элементом местами.</p>
4
<p>Итак, когда мы знаем, что первый элемент списка является отсортированным, мы находим самый маленький элемент из оставшихся, меняя его местами со вторым. Процесс повторяется до тех пор, пока в нашем списке не останется последний элемент.</p>
4
<p>Итак, когда мы знаем, что первый элемент списка является отсортированным, мы находим самый маленький элемент из оставшихся, меняя его местами со вторым. Процесс повторяется до тех пор, пока в нашем списке не останется последний элемент.</p>
5
<h2>Реализация алгоритма сортировки выборкой</h2>
5
<h2>Реализация алгоритма сортировки выборкой</h2>
6
<p>На языке программирования Python алгоритм можно реализовать следующим образом:</p>
6
<p>На языке программирования Python алгоритм можно реализовать следующим образом:</p>
7
def selection_sort(nums): # Значение i отвечает числу отсортированных значений for i in range(len(nums)): # Изначально считаем наименьшим первый элемент lowest_value_index = i # Данный цикл перебирает несортированные элементы for j in range(i + 1, len(nums)): if nums[j] < nums[lowest_value_index]: lowest_value_index = j # Наименьший элемент меняем с первым в списке nums[i], nums[lowest_value_index] = nums[lowest_value_index], nums[i] # Проверяем, что всё работает random_list_of_nums = [12, 8, 3, 20, 11] selection_sort(random_list_of_nums) print(random_list_of_nums)<p>Обратите внимание, что в процессе увеличения значения i надо проверять всё меньше элементов.</p>
7
def selection_sort(nums): # Значение i отвечает числу отсортированных значений for i in range(len(nums)): # Изначально считаем наименьшим первый элемент lowest_value_index = i # Данный цикл перебирает несортированные элементы for j in range(i + 1, len(nums)): if nums[j] < nums[lowest_value_index]: lowest_value_index = j # Наименьший элемент меняем с первым в списке nums[i], nums[lowest_value_index] = nums[lowest_value_index], nums[i] # Проверяем, что всё работает random_list_of_nums = [12, 8, 3, 20, 11] selection_sort(random_list_of_nums) print(random_list_of_nums)<p>Обратите внимание, что в процессе увеличения значения i надо проверять всё меньше элементов.</p>
8
<h2>Время сортировки</h2>
8
<h2>Время сортировки</h2>
9
<p>Время сортировки в среднем составляет O(n2), где n - это число элементов списка.</p>
9
<p>Время сортировки в среднем составляет O(n2), где n - это число элементов списка.</p>
10
<p><a>Источник</a></p>
10
<p><a>Источник</a></p>
11
11