A
- это массив целых чисел от 1
до n
в случайном порядке.
Мне нужен произвольный доступ к i
-му наибольшему элементу из первых элементов j
, по крайней мере, в течение времени журнала.
То, что я до сих пор придумал, это n x n
matrix M
, где элемент в позиции (i, j)
является i
th самым большим из первых j
. Это дает мне постоянный произвольный доступ, но требует хранения n^2
.
По построению M
сортируется по строке и столбцу. Кроме того, каждый столбец отличается от своих соседей одним значением.
Может ли кто-нибудь предложить способ сжимать M
до места n log(n)
или лучше, с log(n)
или лучшим временем произвольного доступа?