Нижняя граница Ω(nlogn) временной сложности каждого алгоритма сортировки на основе сравнения при заданном максимуме M

Учитывая максимальный элемент M массива с n элементами [1,...,n], как это влияет на нижнюю границу Ω(nlogn) временной сложности каждого алгоритма сортировки на основе сравнения? Я должен подчеркнуть, что задан максимальный элемент M массива.


person user3133007    schedule 24.12.2013    source источник
comment
O((n-1)log(n-1)) = O(nlogn)   -  person Abhishek Bansal    schedule 24.12.2013


Ответы (2)


Это не влияет.

Обратите внимание, что существует n! возможная перестановка, и каждая операция сравнения имеет 2 возможных результата: «левый выше» или «правый выше».
Для любого алгоритма, основанного на сравнениях, каждое «решение» принимается в соответствии с результатом одного сравнения.

Таким образом, чтобы успешно определить правильный порядок любой перестановки, вам понадобится (в худшем случае) log2(n!) сравнений.
Однако хорошо известно, что log2(n!) находится в тета(nlogn) – и вы вернулись к нижней границе Omega(nlogn), независимо от диапазона в рука.

Обратите внимание, что другие методы, которые не используют (только) сравнения, существуют для более эффективной сортировки целых чисел.

person amit    schedule 24.12.2013
comment
Стоит отметить, что их n! перестановки тогда и только тогда, когда все элементы различны. - person pkacprzak; 25.12.2013

Если M действительно является границей абсолютных значений элементов массива, а элементы являются целыми числами, вы можете отсортировать массив за O(n + M) времени, сохранив отдельный массив int occurrences[2M + 1]; инициализированным до 0, просмотрев исходный массив и подсчитав число вхождений каждого элемента и запись выходного массива с использованием occurrences.

Если элементы являются числами с плавающей запятой (формально вещественными числами), ограничение их величин не имеет никакого эффекта.

Если элементы являются целыми и могут быть отрицательными (формально целыми числами сколь угодно большой величины), то верхняя граница величин не имеет значения.

Изменить: в первом абзаце было O(n), должно быть O(n + M).

person Andrey Mishchenko    schedule 24.12.2013
comment
Это не ответ на вопрос. ОП не спрашивает, как эффективно сортировать перестановку целых чисел, он спрашивает, как тот факт, что это перестановка, влияет на оценку для алгоритмов, основанных на сравнениях< /я> - person amit; 24.12.2013