Каков наиболее эффективный способ сортировки массива на любом языке? С наименьшими значениями O() и P(). Я считаю, что сортировка оболочки является одним из лучших способов сортировки, но есть ли что-то более быстрое?Самый эффективный способ сортировки arrya
ответ
Чтобы сделать его коротким:
Introsort и Timsort являются наиболее часто используемые алгоритмы сортировки в реальном мире.
В среднем они имеют как O (nlogn) сложность, так и в худших случаях, что делает их лучше, чем QuickSort в тех случаях, когда Quicksort находится в O (n^2). Introsort используется в C и C++ STL, а Timsort используется в реализациях Python и Java (по крайней мере для сортировки массивов объектов в Java).
Оболочка Shell находится в O (n (logn)^2), поэтому немного медленнее, но использует меньше памяти, поэтому может быть пригодна для встроенных систем. См. enter link description here для получения более подробной информации.
Сортировка кучи использует O (1) память и время O (nlogn), не лучше ли это сортировка оболочки? –
Да, он также использует небольшую память, но сравнение алгоритмов сортировки во встроенных системах - деликатный вопрос. См. Http://embeddedgurus.com/stack-overflow/2009/03/sorting-in-embedded-systems/, например –
Быстросортировать, вероятно, самый быстрый универсальный алгоритм со скоростью O (n logn) – Iamsomeone
Каков наиболее эффективный способ узнать ответ на этот вопрос? Google ... –
http://cs.stackexchange.com/a/18545 –