Структура данных и сортировка выбора алгоритмов
Выборочная сортировка - это простой алгоритм сортировки. Этот алгоритм сортировки представляет собой алгоритм на основе сравнения на месте, в котором список делится на две части: отсортированная часть на левом конце и несортированная часть на правом конце. Изначально отсортированная часть пуста, а несортированная часть - это весь список.
Наименьший элемент выбирается из несортированного массива и заменяется крайним левым элементом, и этот элемент становится частью отсортированного массива. Этот процесс продолжает перемещение границы несортированного массива на один элемент вправо.
Этот алгоритм не подходит для больших наборов данных, так как его средняя и худшая сложность составляют Ο (n 2 ), гдеn количество элементов.
Как работает сортировка по выбору?
Рассмотрим в качестве примера следующий изображенный массив.
Для первой позиции в отсортированном списке весь список просматривается последовательно. В первой позиции, где в настоящее время хранится 14, мы просматриваем весь список и обнаруживаем, что 10 - это наименьшее значение.
Поэтому мы заменяем 14 на 10. После одной итерации 10, которое оказывается минимальным значением в списке, появляется в первой позиции отсортированного списка.
Для второй позиции, где проживает 33, мы начинаем сканировать оставшуюся часть списка линейным образом.
Мы обнаруживаем, что 14 - это второе наименьшее значение в списке, и оно должно стоять на втором месте. Мы меняем эти значения местами.
После двух итераций два наименьших значения располагаются в начале отсортированным способом.
Тот же процесс применяется к остальным элементам в массиве.
Ниже приводится графическое изображение всего процесса сортировки.
Теперь давайте изучим некоторые программные аспекты сортировки выбора.
Алгоритм
Step 1 − Set MIN to location 0
Step 2 − Search the minimum element in the list
Step 3 − Swap with value at location MIN
Step 4 − Increment MIN to point to next element
Step 5 − Repeat until list is sorted
Псевдокод
procedure selection sort
list : array of items
n : size of list
for i = 1 to n - 1
/* set current element as minimum*/
min = i
/* check the element to be minimum */
for j = i+1 to n
if list[j] < list[min] then
min = j;
end if
end for
/* swap the minimum element with the current element*/
if indexMin != i then
swap list[min] and list[i]
end if
end for
end procedure
Чтобы узнать о реализации сортировки выбора на языке программирования C, нажмите здесь .