o(log n)中的c ++ bitset逻辑运算?

时间:2017-06-13 11:22:37

标签: c++11 time-complexity bitwise-operators std-bitset

根据这篇文章Performance of doing bitwise operations on bitsets,性能是O(n)我如何使其成为O(log n)。 谢谢。

1 个答案:

答案 0 :(得分:3)

答案是你没有。

假设您有一个n大小的位集。 我们来看看xor运算符^。 显然,它必须查看两个操作数中的每个位,因此它会进行2n次查找。 这会导致O(n)的复杂性。

您可以使用汇编程序指令,例如一次做32位,因此操作次数为(n+31)/32,但这并不会改变复杂度O(n)。在计算n向无穷大的所有复杂度之后,忽略常数因子。