Учитывая 2 списки уникальных, заказываемые, несмежных элементов, говорят:Поиск всех индексов некоторых элементов в данном списке. Можно ли это сделать меньше, чем O (n^2) без массивов в Haskell?
['d', 'a', 'z', 'b']
Я хочу найти свой индекс в другом списке, скажем:
['a', 'b', 'z', 'd']
Результатом будет список с их позиции:
[3, 0, 2, 1] -- element at 0 is at 3,
-- element at 1 is at 0, etc.
Является ли второй список гарантией перестановки первого? – dfeuer
Теория предсказывает, что без массивов функциональное программирование не более O (log n) раз медленнее. В самом деле, вы можете заменить массив на древовидную карту, имеющую O (log n) доступ вместо O (1). Итак, если вы можете определить алгоритм O (f (n)) в императивном мире, вы знаете, что вы можете достичь O (f (n) log f (n)) в функциональном мире. Можно ли закрыть этот пробел, остается открытой проблемой, AFAIK. (На практике многие функциональные языки поддерживают массивы напрямую, поэтому, чтобы избежать проблемы) – chi
@chi Где я мог прочитать эту теорию (или, под каким именем я должен искать)? – phg