我有一个场景,我必须将BitSet索引的范围设置为1。 所以,如果我使用
/*
*Code snippet
*/
BitSet myBitSet = new BitSet(100);
myBitSet.set(10, 50);
//**************************
上述代码的时间复杂度是多少?它会迭代40个元素还是会执行某种位操作?
答案 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)