Простые сортировки

Опять же, взять в сравнение эту самую сортировку вставками и, например, HeapSort. От автора Данная статья рассматривает один из алгоритмов сортировки массивов. Реализация сортировки очень проста, всего 3 строчки. Эффективность Сортировка вставками наиболее эффективна когда массив уже частично отсортирован и когда элементов массива не много. Если же элементов меньше 10 то данный алгоритм является лучшим.

В любой момент времени в отсортированной последовательности элементы удовлетворяют требованиям к выходным данным алгоритма. Для сортировки не требуется привлечения дополнительной памяти, кроме постоянной величины для одного элемента, так как выполняется перестановка в пределах массива.

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

Реализация Прежде чем приступить к реализации определимся с форматом входных данных — для примера это будет массив целочисленных (int) значений. Анализ производительности Сортировка вставками имеет сложность n2, количество сравнений вычисляется по формуле n*(n-1)/2.

Простые сортировки

Сделал много тестов, рандомные числа, и худший случай для сортировки — массив отсортированный в обратном порядке. Если в двух словах — представим, что нам нужно отсортировать массив из N элементов, для простоты условимся, что все ключи попарно различны.

Фактически, задачей алгоритма сортировки является нахождение такой перестановки, применение которой к входной перестановке ее отсортирует. Причем для каждой из возможных входных перестановок существует 1 единственная перестановка, переводящая входной массив в отсортированный.

Когда ты можешь написать статью об алгоритме он у тебя невольно остаётся в памяти) Я не считаю этот алгоритм вершиной сложности, наоборот решил начать с простого. Сколь бы хорошим и эффективным ни был выбранный вами алгоритм, но если в качестве подзадачи он использует «плохую» сортировку, то вся работа по его оптимизации оказывается бесполезной.

Их важная особенность состоит в том, что эти алгоритмы не требуют дополнительной памяти: вся работа по упорядочению производится внутри одного и того же массива. К простым внутренним сортировкам относят методы, сложность которых пропорциональна квадрату размерности входных данных. Иными словами, при сортировке массива, состоящего из N компонент, такие алгоритмы будут выполнять С*N2 действий, где С — некоторая константа.

Общую же эффективность алгоритма обычно оценивают «в среднем»: как среднее арифметическое от сложности алгоритма «в лучшем случае» и «в худшем случае», то есть (Eff_best + Eff_worst)/2. Самый простой способ сортировки2В названиях алгоритмов мы будем следовать Кнуту., который приходит в голову, — это упорядочение данных по мере их поступления.

Понятно, что для этой сортировки наилучшим будет случай, когда на вход подается уже упорядоченная последовательность данных. В худшем же случае — когда входная последовательность упорядочена «наоборот» — сравнений будет уже (N+1)*N/2, а пересылок (N-1)*(N+3).

Алгоритм сортировки постепенно «уточняет» необходимую перестановку так, чтобы в итоге осталась одна единственная, сортирующая именно эту входную последовательность. Эти элементы поступают на вход алгоритма сортировки в виде одной из N! различных перестановок этих элементов. Для алгоритмов сортировок, основанных на сравнении элементов, доказано, что не может существовать алгоритма со сложностью лучшей, чем n*log(n).

Что еще посмотреть: