C++ битовые логические операции в O(log n)?
Согласно этому посту Производительность выполнения побитовых операций над производительностью битовых наборов составляет O(n), как мне сделать это O(log n). Благодарю.
1 ответ
Решение
Ответ - нет.
Предположим, у вас есть набор n
размер. Давайте посмотрим на оператор XOR ^
, Очевидно, он должен смотреть на каждый бит в обоих операндах, поэтому 2n
поиск. Это приводит к сложности O(n)
,
Вы можете использовать инструкции ассемблера, которые, например, делают это по 32 бита за раз, поэтому количество операций (n+31)/32
, но это не меняет того, что сложность O(n)
, Ведь сложность рассчитана на n
к бесконечности и постоянные факторы не учитываются.