我想知道Bitvector32的按位运算符是否在O(1)时间内运行。我目前正在使用大尺寸的BitArray并使用Bitwise And,Or和Not,它们以O(比特阵列的大小)运行。
我在互联网上搜索了这个,但找不到答案。希望这里的人可以帮忙!
答案 0 :(得分:2)
鉴于BitVector32
总是正好是32位,所以没有可变的大小 - 所以如何根据数据的大小来表达任何操作?
就我个人而言,我从未发现BitVector32
是一种非常令人愉快的类型 - 我通常只会坚持使用UInt32
代表32位,并使用普通&
,{{1等操作符。
如果您正在考虑用一堆|
值替换BitArray
,那么最终仍会使每个操作都为O(n)。从根本上说,除非你实际存储原始值和操作,否则很难避免这种情况,推迟操作的实际应用 - 这将更加复杂,并且如果你只访问一个,那么最终会让事情变得更好结果的一小部分。
答案 1 :(得分:2)