Сортировка выбором (Selection Sort)

Материал из m6a
Перейти к: навигация, поиск

Сортировка выбором - это простой алгоритм сортировки на месте. Он не очень эффективен для больших списков, но имеет свои преимущества:

  • Прост в реализации.
  • Хорошо работает для небольших наборов данных.
  • Сортирует на месте, не требуя дополнительной памяти.

Как это работает

Алгоритм сортировки выбором работает следующим образом:

  1. Найти минимальный элемент в неотсортированной части массива.
  2. Поменять местами этот минимальный элемент с первым элементом неотсортированной части.
  3. Повторять шаги 1 и 2 для оставшейся неотсортированной части массива.

Псевдокод

Вот псевдокод для алгоритма сортировки выбором:

``` for i = 0 to n-2 do

   min_index = i
   for j = i+1 to n-1 do
       if arr[j] < arr[min_index] then
           min_index = j
       end if
   end for
   swap arr[i] and arr[min_index]

end for ```

Пример

Давайте рассмотрим пример сортировки массива `[64, 25, 12, 22, 11]` с использованием сортировки выбором:

  1. Первый проход:
    1. Минимальный элемент - `11`.
    2. Меняем местами `64` и `11`: `[11, 25, 12, 22, 64]`
  2. Второй проход:
    1. Минимальный элемент в `[25, 12, 22, 64]` - `12`.
    2. Меняем местами `25` и `12`: `[11, 12, 25, 22, 64]`
  3. Третий проход:
    1. Минимальный элемент в `[25, 22, 64]` - `22`.
    2. Меняем местами `25` и `22`: `[11, 12, 22, 25, 64]`
  4. Четвертый проход:
    1. Минимальный элемент в `[25, 64]` - `25`.
    2. Ничего не меняем, так как он уже на месте.

Массив отсортирован: `[11, 12, 22, 25, 64]`.

Временная сложность

Временная сложность сортировки выбором всегда $O(n^2)$, независимо от входных данных. Это делает ее неэффективной для больших наборов данных.

  • Лучший случай: $O(n^2)$
  • Средний случай: $O(n^2)$
  • Худший случай: $O(n^2)$

Преимущества и недостатки

Преимущества:

  • Простая реализация.
  • Хорошо работает для небольших наборов данных.
  • Сортирует на месте.

Недостатки:

  • Неэффективна для больших наборов данных из-за квадратичной временной сложности.
  • Выполняет много операций записи, что может быть нежелательно для флеш-памяти.

Когда использовать

Сортировку выбором можно использовать для небольших наборов данных или когда простота реализации важнее производительности. В большинстве случаев существуют более эффективные алгоритмы сортировки, такие как сортировка слиянием или быстрая сортировка, которые следует использовать для больших наборов данных.