В настоящее время я работаю над проектом, который связан с получением количества конфликтов между двумя массивами. Это означает различия в порядке, в которых определенные числа помещаются в массив. Каждый номер появляется только один раз, и два массива всегда имеют одинаковый размер.Получите количество конфликтов между двумя массивами [Divide and Conquer]
Например:
[1,2,3,4]
[4,3,2,1]
Эти два массива имеют 6 конфликтов:
- 1 приходит 2 в первом массиве, но 2 приходит на 1 в секунду, так что конфликт + 1.
- 1 приходит 3 в первом массиве, но 3 приходит на 1 в секунду, так что конфликт + 1.
- т.д.
Я пробовал некоторые подходы к созданию алгоритма, который вычисляет сумму в O (n log n). Я уже сделал это с помощью динамического программирования, которое является O (N²), но мне нужен алгоритм, который вычисляет значение Divide и Conquer.
У любого человека есть мысливые мысли.
Эти конфликты называют «инверсий» в литературе. Google «count inversions in array». Это помогает, если вы переделаете числа так, чтобы первый массив был «[1,2, ..., n]». –