Оба списка должны быть отсортированы по возрастанию, чтобы это работало.
Расходы на сортировку O (log n) . А большая арифметика означает, что делать это дважды - все равно O(n log n)
. Я собираюсь предположить, что они уже отсортированы. Оставшаяся работа ниже не влияет на стоимость Big-O.
Иметь индекс для массива B
с именем indexB
, значение ноль (мой псевдокод будет использовать индексацию на основе нуля). И indexA
для A
, также начинающегося с нуля.
indexA=0
For each indexB from 0 to B.Length-1
While indexA < A.Length and the value at `A[indexA]` is less than or equal to the value at `B[indexB]`
Set the `result[indexA]` to be `indexB`
Increment `indexA`
Endwhile
Endfor
После этого все остальные предметы в result
начиная с indexA
и далее больше, чем все предметы в B
, поэтому установите остальные из них на B.Length
.