Предположим, что у нас есть массив данных и другой массив с индексами.
data = [1, 2, 3, 4, 5, 7]
index = [5, 1, 4, 0, 2, 3]
Мы хотим создать новый массив из элементов data
в позиции из index
. Результат должен быть
[4, 2, 5, 7, 3, 1]
Наивный алгоритм работает для O (N), но он выполняет произвольный доступ к памяти.
Можете ли вы предложить алгоритм, совместимый с кэшем процессора, с той же сложностью.
PS В моем конкретном случае все элементы массива данных являются целыми числами.
ПФС Массивы могут содержать миллионы элементов.
PPPS Я в порядке с SSE/AVX или любыми другими 64-разрядными оптимизациями