在Java中,BitSet的Set操作的时间复杂度是多少?

时间:2016-02-26 06:10:25

标签: java time-complexity bit bitset

我有一个场景,我必须将BitSet索引的范围设置为1。 所以,如果我使用

   /*
    *Code snippet
    */
    BitSet myBitSet = new BitSet(100);
    myBitSet.set(10, 50);

    //**************************

上述代码的时间复杂度是多少?它会迭代40个元素还是会执行某种位操作?

4 个答案:

答案 0 :(得分:4)

由于某种原因,它没有在Javadoc中指定,但Oracle实现肯定是 O(1),用于获取,设置,翻转和清除一个参数; O(N)有两个参数。 “矢量位”可能仅作为提示。

答案 1 :(得分:3)

对于单个位,它将为O(1),设置n位的复杂度为O(N)。

对于怀疑者:设置n位是O(N),因为设置10_000位比设置1_000位长约10倍。

也就是说,调用myBitSet.set(10,50)而不是写for (int i=10; i<=50; i++) myBitSet.set(i);

更有效

答案 2 :(得分:0)

因为它使用数组,所以set / get都是O(1)

答案 3 :(得分:0)

设置操作将设置位(fromIndex将为10,toIndex将为49) 它将遍历从10到49的40个元素。是的,复杂性将是O(1)