Структура данных и сортировка выбора алгоритмов

Выборочная сортировка - это простой алгоритм сортировки. Этот алгоритм сортировки представляет собой алгоритм на основе сравнения на месте, в котором список делится на две части: отсортированная часть на левом конце и несортированная часть на правом конце. Изначально отсортированная часть пуста, а несортированная часть - это весь список.

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

Этот алгоритм не подходит для больших наборов данных, так как его средняя и худшая сложность составляют Ο (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, нажмите здесь .