Квадратичные сортировки. Сортировка выбором.
В Трешландии строго следят за порядком. За каждым жителем фиксируют нарушения, и к злостным нарушителям применяют штрафные санкции. Хулиганов могут лишить права подольше спать в выходные, есть мороженое, петь в душе. А могут и отправить на исправительные работы: например, собирать червяков на улице после дождя, дрессировать белок в парке, отгонять жуков от кабачков. Особо провинившимся дают задание — научить немого попугая короля Кондратия петь песни Rammstein.
Есть специальный журнал, в котором отмечается количество нарушений за неделю для каждого жителя.
В конце каждой недели определяют самых злостных нарушителей. Для этого нужно отсортировать список по убыванию.
Как это сделать?
Например, выбрать из списка наибольший элемент. Пройдя по массиву, можно определить, что Феликс вёл себя хуже всех, у него аж 30 нарушений. Кажется, ему пора начинать учить немецкий.
Феликса нужно добавить в новый массив и удалить из исходного.
Далее нужно выбрать элемент с наибольшим значением из оставшихся. И на втором месте — Алиса Ермолаева, у неё 11 нарушений. Алису нужно добавить в новый массив и удалить из исходного.
Аналогично нужно поступить с Гришей Бенидиктовым.
Делаем так до тех пор, пока не закончится исходный список. В итоге получим список, отсортированный по убыванию, который начинается с жителя с наибольшим числом нарушений и оканчивается наименьшим.
Задача решена, осталось назначить наказания!
На каждом шаге алгоритма выбирали элемент с наибольшим значением из оставшихся.
Какая у него вычислительная сложность?
Всего шагов
n, где
n — количество жителей.
Что происходит на каждом шаге?
Мы проходим по всему массиву и выбираем элемент с максимальным значением. Сложность этой операции
O(n). Найденный элемент добавляем в новый массив. Стоимость такой операции
O(1). Затем удаляем этот элемент из старого массива.