Сортировка выбором — различия между версиями
Krotser (обсуждение | вклад) |
Krotser (обсуждение | вклад) |
||
Строка 2: | Строка 2: | ||
== Алгоритм == | == Алгоритм == | ||
− | + | На каждом <tex>i</tex>-ом шаге алгоритма находим <tex>i</tex>-ый минимальный элемент и меняем его местами с <tex>i</tex>-ым элементом в массиве. Таким образом, будет получен массив отсортированный по неубыванию. | |
− | |||
− | |||
− | |||
− | |||
== Реализация == | == Реализация == | ||
Строка 29: | Строка 25: | ||
|- | |- | ||
|style="background-color:#FFF;padding:2px 10px"| 5 4 '''1''' 2 3 | |style="background-color:#FFF;padding:2px 10px"| 5 4 '''1''' 2 3 | ||
− | |style="background-color:#FFF;padding:2px 10px"| Находим минимальный элемент {{---}} '''1''' | + | |style="background-color:#FFF;padding:2px 10px"| Находим первый минимальный элемент {{---}} '''1''' |
|- | |- | ||
|style="background-color:#FFF;padding:2px 10px"| '''1''' 4 '''5''' 2 3 | |style="background-color:#FFF;padding:2px 10px"| '''1''' 4 '''5''' 2 3 | ||
− | |style="background-color:#FFF;padding:2px 10px"| Меняем минимальный и первый элемент | + | |style="background-color:#FFF;padding:2px 10px"| Меняем минимальный и первый элемент |
|- | |- | ||
|colspan=3|''Второй проход (текущий массив начинается со следующего элемента)'' | |colspan=3|''Второй проход (текущий массив начинается со следующего элемента)'' | ||
|- | |- | ||
|style="background-color:#FFF;padding:2px 10px"| 1 5 4 '''2''' 3 | |style="background-color:#FFF;padding:2px 10px"| 1 5 4 '''2''' 3 | ||
− | |style="background-color:#FFF;padding:2px 10px"| Находим минимальный элемент {{---}} '''2''' | + | |style="background-color:#FFF;padding:2px 10px"| Находим следующий минимальный элемент {{---}} '''2''' |
|- | |- | ||
|style="background-color:#FFF;padding:2px 10px"| 1 '''2''' 4 '''5''' 3 | |style="background-color:#FFF;padding:2px 10px"| 1 '''2''' 4 '''5''' 3 | ||
− | |style="background-color:#FFF;padding:2px 10px"| Меняем минимальный и | + | |style="background-color:#FFF;padding:2px 10px"| Меняем минимальный и второй элемент |
|- | |- | ||
|colspan=3|''Третий проход (текущий массив начинается со следующего элемента)'' | |colspan=3|''Третий проход (текущий массив начинается со следующего элемента)'' | ||
|- | |- | ||
|style="background-color:#FFF;padding:2px 10px"| 1 2 4 5 '''3''' | |style="background-color:#FFF;padding:2px 10px"| 1 2 4 5 '''3''' | ||
− | |style="background-color:#FFF;padding:2px 10px"| Находим минимальный элемент {{---}} '''3''' | + | |style="background-color:#FFF;padding:2px 10px"| Находим следующий минимальный элемент {{---}} '''3''' |
|- | |- | ||
|style="background-color:#FFF;padding:2px 10px"| 1 2 '''3''' 5 '''4''' | |style="background-color:#FFF;padding:2px 10px"| 1 2 '''3''' 5 '''4''' | ||
− | |style="background-color:#FFF;padding:2px 10px"| Меняем минимальный и | + | |style="background-color:#FFF;padding:2px 10px"| Меняем минимальный и третий элемент |
|- | |- | ||
|colspan=3|''Четвертый проход (текущий массив начинается со следующего элемента)'' | |colspan=3|''Четвертый проход (текущий массив начинается со следующего элемента)'' | ||
|- | |- | ||
|style="background-color:#FFF;padding:2px 10px"| 1 2 3 5 '''4''' | |style="background-color:#FFF;padding:2px 10px"| 1 2 3 5 '''4''' | ||
− | |style="background-color:#FFF;padding:2px 10px"| Находим минимальный элемент {{---}} '''4''' | + | |style="background-color:#FFF;padding:2px 10px"| Находим следующий минимальный элемент {{---}} '''4''' |
|- | |- | ||
|style="background-color:#FFF;padding:2px 10px"| 1 2 3 '''4''' '''5''' | |style="background-color:#FFF;padding:2px 10px"| 1 2 3 '''4''' '''5''' | ||
− | |style="background-color:#FFF;padding:2px 10px"| Меняем минимальный и | + | |style="background-color:#FFF;padding:2px 10px"| Меняем минимальный и четвертый элемент |
|- | |- | ||
|style="background-color:#FFF;padding:2px 10px"| 1 2 3 4 5 | |style="background-color:#FFF;padding:2px 10px"| 1 2 3 4 5 |
Версия 10:40, 22 мая 2012
Сортировка выбором (англ. selection sort) — простой алгоритм сортировки со сложностью
, где — количество элементов для сортировки.Содержание
Алгоритм
На каждом
-ом шаге алгоритма находим -ый минимальный элемент и меняем его местами с -ым элементом в массиве. Таким образом, будет получен массив отсортированный по неубыванию.Реализация
// Входной массив 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 отсортирован
Пример
Пусть дана последовательность из
элементов .Массив | Описание шага | |
---|---|---|
Первый проход (текущий массив начинается с первого элемента) | ||
5 4 1 2 3 | Находим первый минимальный элемент — 1 | |
1 4 5 2 3 | Меняем минимальный и первый элемент | |
Второй проход (текущий массив начинается со следующего элемента) | ||
1 5 4 2 3 | Находим следующий минимальный элемент — 2 | |
1 2 4 5 3 | Меняем минимальный и второй элемент | |
Третий проход (текущий массив начинается со следующего элемента) | ||
1 2 4 5 3 | Находим следующий минимальный элемент — 3 | |
1 2 3 5 4 | Меняем минимальный и третий элемент | |
Четвертый проход (текущий массив начинается со следующего элемента) | ||
1 2 3 5 4 | Находим следующий минимальный элемент — 4 | |
1 2 3 4 5 | Меняем минимальный и четвертый элемент | |
1 2 3 4 5 | Массив отсортирован |
Ссылки
Литература
- Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ, 2-е издание. М.: Издательский дом "Вильямс", 2005. ISBN 5-8459-0857-4