Мне нужна быстрая сортировка для проекта без Merge, Quicksort или heapsort - PullRequest
0 голосов
/ 19 апреля 2020

Я час или около того искал виды, которые не перечислены выше. Я спрашивал в другом месте, но люди просто отвечали самыми медленными из возможных вариантов. Пожалуйста помоги. Это должно быть не медленнее, чем O (n log n).

Спасибо

1 Ответ

0 голосов
/ 19 апреля 2020

Выбор самого быстрого алгоритма для сортировки данных действительно зависит от сортируемых данных.

Вы можете использовать сортировку подсчета, которая занимает O(N + R); где R - диапазон значений. Следовательно, чем больше диапазон элементов, тем больше время увеличивается.

Или Быстрая сортировка. Самый быстрый из возможных способов сортировки массива данных состоит в том, чтобы просто отсканировать данные, что даст вам N выбор для первого элемента. , N - 1 выбор для второго элемента и так далее до последнего элемента, который будет иметь только 1 выбор. Это заканчивается алгоритмом сортировки, который можно сделать в O(N!). N! может быть приближено к 2^(N * log N); поэтому быстрая сортировка выполняется в O(N * log N).

Не существует возможных алгоритмов сортировки, которые можно сортировать быстрее, чем O(N * log N).

Уловка для более быстрой сортировки заключается в использовании бесконечного числа процессоров, что может снизить сложность времени до 0(log N), но для больших N вы можете увидеть, как это не практично.

Или можно использовать log N процессоры, работающие параллельно, чтобы довести временную сложность до O(N). Но опять же, параллельная обработка - это больше хитрости, чем чего-либо еще. Сам алгоритм не сжат до O(N).

...