Внутренний массив переупорядочения?

, скажем, у меня есть массив a длины n и второй массив индексов , Также длины N . Индексы содержат некоторую произвольную перестановку последовательности [0, N) . Я хочу переставить A , так что это в порядке, указанном индексами . Например, используя синтаксис D:

auto a = [8, 6, 7, 5, 3, 0, 9];
auto indices = [3, 6, 2, 4, 0, 1, 5];
reindexInPlace(a, indices);
assert(a == [5, 9, 7, 3, 8, 6, 0]);

может быть сделано в одном количестве O (1), так и O (n) времени, предпочтительно без мутации ?

20
задан dsimcha 9 September 2011 в 18:31
поделиться