C++ битовые логические операции в O(log n)?

Согласно этому посту Производительность выполнения побитовых операций над производительностью битовых наборов составляет O(n), как мне сделать это O(log n). Благодарю.

1 ответ

Решение

Ответ - нет.

Предположим, у вас есть набор n размер. Давайте посмотрим на оператор XOR ^, Очевидно, он должен смотреть на каждый бит в обоих операндах, поэтому 2n поиск. Это приводит к сложности O(n),

Вы можете использовать инструкции ассемблера, которые, например, делают это по 32 бита за раз, поэтому количество операций (n+31)/32, но это не меняет того, что сложность O(n), Ведь сложность рассчитана на n к бесконечности и постоянные факторы не учитываются.

Другие вопросы по тегам