Скажем, у меня есть массив целых чисел xs
, принимающих значения от 0
до max
, и мне нужно отсортировать его за время O(n), поэтому я не могу просто выполнить (sort xs)
.
Есть ли способ сделать это с помощью функции frequencies
?
На другом языке я бы затем сделал for
для перебора целых чисел от 0
до max
, и для каждого значения x
в этом диапазоне искал (frequencies x)
, а затем делал repeat (frequencies x) x
или что-то в этом роде.
Крайне важно, что мне нужно делать это в ПОРЯДКЕ от меньшего к большему, что делает все это своего рода. Поэтому я НЕ хочу просто map
каждого числа в xs
.
Есть идеи для идиоматического решения в стиле clojure?
Спасибо.
(sort xs)
. Вероятно, это быстрее, чем любой код, который вы могли бы написать. Если вам действительно нужно индивидуальное решение, посмотрите библиотеку data.int-map для Работа с целочисленными ключами. - person miner49r   schedule 04.03.2018(sort xs)
. Когда вы сложите стоимость(frequencies xs)
и добавите много(repeat frequencies x) x)
, получится больше, чем(sort xs)
. - person Alan Thompson   schedule 04.05.2018