Сортировка выбором — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «== Редактирование ==»)
 
Строка 1: Строка 1:
== Редактирование ==
+
'''Сортировка выбором''' (англ. '''selection sort''') - это простой алгоритм сортировки со сложностью <tex>O(n^2)</tex>, где <tex>n</tex> - количество элементов для сортировки. Сортировка выбором предназначена для решения задачи сортировки (sorting problem).
 +
 
 +
== Задача сортировки ==
 +
'''На входе''' последовательность из <tex>n</tex> чисел (<tex>x_1, x_2, ..., x_n</tex>).
 +
 
 +
'''На выходе''' перестановка данной последовательности (<tex>{x_1}^{'}, {x_2}^{'}, ..., {x_n}^{'}</tex>) таким образом, что для ее членов выполняется <tex>{x_1}^{'} \le {x_2}^{'} \le ... \le {x_n}^{'}</tex>.
 +
 
 +
== Алгоритм ==
 +
 
 +
Шаг 1. Выбираем минимальный элемент из текущего массива.
 +
 
 +
Шаг 2. Ставим его на первое место.
 +
 
 +
Шаг 3. Новый массив начинается со следующего элемента. Перейти к шагу 1, если массив не пустой.
 +
 
 +
== Реализация ==
 +
  // Входной массив x, содержащий n элементов.
 +
  for (i = 0 to n - 1)
 +
    int min = i;
 +
        for (j = i + 1 to n - 1)
 +
          if (x[j] < x[min])
 +
              min = j;
 +
    swap(x[i], x[min]);
 +
  // Массив x отсортирован

Версия 15:22, 13 мая 2012

Сортировка выбором (англ. selection sort) - это простой алгоритм сортировки со сложностью [math]O(n^2)[/math], где [math]n[/math] - количество элементов для сортировки. Сортировка выбором предназначена для решения задачи сортировки (sorting problem).

Задача сортировки

На входе последовательность из [math]n[/math] чисел ([math]x_1, x_2, ..., x_n[/math]).

На выходе перестановка данной последовательности ([math]{x_1}^{'}, {x_2}^{'}, ..., {x_n}^{'}[/math]) таким образом, что для ее членов выполняется [math]{x_1}^{'} \le {x_2}^{'} \le ... \le {x_n}^{'}[/math].

Алгоритм

Шаг 1. Выбираем минимальный элемент из текущего массива.

Шаг 2. Ставим его на первое место.

Шаг 3. Новый массив начинается со следующего элемента. Перейти к шагу 1, если массив не пустой.

Реализация

 // Входной массив x, содержащий n элементов.
 for (i = 0 to n - 1)
    int min = i;
       for (j = i + 1 to n - 1)
          if (x[j] < x[min])
             min = j;
    swap(x[i], x[min]);
 // Массив x отсортирован