как отсортировать массив в C за один цикл? - PullRequest
0 голосов
/ 06 декабря 2010

Есть ли алгоритм сортировки массива чисел с плавающей точкой за один цикл?

Ответы [ 7 ]

5 голосов
/ 06 декабря 2010

Если вы имеете в виду один проход, то нет. Сортировка обычно требует либо O (N log N). Один проход подразумевает O (N).

Радикальная сортировка занимает O (N * k) со средней длиной ключа k. Хотя это линейное время, оно требует нескольких проходов. Он также обычно не подходит для сортировки поплавков.

3 голосов
/ 06 декабря 2010

Возьмите ноутбук с программой быстрой сортировки.Затем положите ноутбук на одноколесном велосипеде.Тада!Сортировка за один цикл.

2 голосов
/ 06 декабря 2010

проверка Подсчет сортировки выполняется за время O (N + M), где N - размер входного массива, а M - размер массива сортировки

1 голос
/ 06 декабря 2010

Нет, нет алгоритма с O (n). Возможно, используется столько параллельных компьютеров, сколько элементов в вашем массиве, либо квантовые компьютеры, но если вы хотите, чтобы O (n) теперь использовалось на обычном компьютере, вы можете забыть об этом.

1 голос
/ 06 декабря 2010

Есть несколько алгоритмов сортировки, которые в лучшем случае являются O (n).Смотрите здесь .

0 голосов
/ 02 апреля 2018

Алгоритм сортировки «за один цикл» - я полагаю, вы имеете в виду алгоритм с линейной сложностью.В дополнение к этим ответам вы также можете проверить Алгоритм сортировки ведра .Имеет среднюю производительность O (n + k).

0 голосов
/ 06 декабря 2010

номер

<aside> @ codinghorror: почему в моем сообщении должно быть> = 15 символов? </aside>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...