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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Алгоритм)
Строка 1: Строка 1:
'''Сортировка выбором''' (англ. '''selection sort''') - это простой алгоритм сортировки со сложностью <tex>O(n^2)</tex>, где <tex>n</tex> - количество элементов для сортировки. Сортировка выбором предназначена для решения задачи сортировки (sorting problem).
+
'''Сортировка выбором''' (англ. '''selection sort''') {{---}} простой алгоритм сортировки со сложностью <tex>O(n^2)</tex>, где <tex>n</tex> {{---}} количество элементов для сортировки.
 
 
== Задача сортировки ==
 
'''На входе''' последовательность из <tex>n</tex> чисел.
 
 
 
'''На выходе''' отсортированная последовательность по неубыванию.
 
  
 
== Алгоритм ==
 
== Алгоритм ==
 
[[file:Selection_sort.png|thumb|240px|Пример работы алгоритма для последовательности из 6 элементов]]
 
[[file:Selection_sort.png|thumb|240px|Пример работы алгоритма для последовательности из 6 элементов]]
0. Назовем элементы массива списком.
 
  
1. Находим номер минимального элемента из текущего списка.
+
1. Находим номер минимального элемента из текущего массива.
  
2. Меняем минимальный элемент с первым элементом списка.
+
2. Меняем минимальный элемент с первым элементом массива.
  
3. Если список пуст, то массив отсортирован. Иначе вернемся к шагу 1, убрав первый элемент из списка.
+
3. Если текущий массив пуст, то данный массив отсортирован. Иначе вернемся к шагу 1, убрав первый элемент из текущего массива.
  
  
Строка 25: Строка 19:
 
== Реализация ==
 
== Реализация ==
 
   // Входной массив x, содержащий n элементов.
 
   // Входной массив x, содержащий n элементов.
   for (i = 0 to n - 1)
+
   for i = 0 to n - 1
     int min = i;
+
     min = i;
         for (j = i + 1 to n - 1)
+
         for j = i + 1 to n - 1
           if (x[j] < x[min])
+
           if x[j] < x[min]
 
               min = j;
 
               min = j;
 
     swap(x[i], x[min]);
 
     swap(x[i], x[min]);

Версия 22:21, 20 мая 2012

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

Алгоритм

Пример работы алгоритма для последовательности из 6 элементов

1. Находим номер минимального элемента из текущего массива.

2. Меняем минимальный элемент с первым элементом массива.

3. Если текущий массив пуст, то данный массив отсортирован. Иначе вернемся к шагу 1, убрав первый элемент из текущего массива.


Пример

Пусть дана последовательность из [math]6[/math] элементов [math]5, 4, 1, 6, 2, 3[/math].

Белым фоном обозначен текущий список, зеленым отсортированная часть, а красным минимальный элемент.

Реализация

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

Ссылки

Литература

  • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ, 2-е издание. М.: Издательский дом "Вильямс", 2005. ISBN 5-8459-0857-4