Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 c++;位集逻辑操作是否在O(日志n)中?_C++11_Time Complexity_Bitwise Operators_Std Bitset - Fatal编程技术网

C++11 c++;位集逻辑操作是否在O(日志n)中?

C++11 c++;位集逻辑操作是否在O(日志n)中?,c++11,time-complexity,bitwise-operators,std-bitset,C++11,Time Complexity,Bitwise Operators,Std Bitset,根据这篇文章,性能是O(n),我如何使它成为O(logn)。 谢谢 答案是你没有 假设您有一个n大小的位集。 让我们看看异或运算符^。 显然,它必须查看两个操作数中的每一位,因此它进行2n查找。 这导致复杂性为O(n) 您可以使用汇编指令,例如一次执行32位,因此操作数为(n+31)/32,但这不会改变复杂性为O(n)。在所有的复杂度都被计算后,n趋于无穷大,常数因子被忽略。我认为这要视情况而定。你必须提供更多信息。我认为,std::bitset的O(1)解决方案是完全可能的,但不适用于std:

根据这篇文章,性能是O(n),我如何使它成为O(logn)。
谢谢

答案是你没有

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


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

我认为这要视情况而定。你必须提供更多信息。我认为,
std::bitset
的O(1)解决方案是完全可能的,但不适用于
std::bitset
。在小于O(n)的运算中,无法对大小为O(n)的位集执行按位运算,除非我们这里有A,否则无法执行。能否执行取决于计算模型,但这可能被视为“欺骗”。在婴儿车模型中很容易。