Java - bitCount()的大O?

时间:2017-05-29 21:08:50

标签: java big-o bitcount

比特数的大O是多少?我不确定该方法是如何工作的,但我认为它是在O(logn)中完成的。

具体使用此代码(其中x = 4,y = 1):

return Integer.bitCount(x^y);

3 个答案:

答案 0 :(得分:4)

鉴于其实现,该方法由按顺序执行的六个O(1)语句组成,因此它是O(1)。

public static int bitCount(int i) {
    // HD, Figure 5-2
    i = i - ((i >>> 1) & 0x55555555);
    i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
    i = (i + (i >>> 4)) & 0x0f0f0f0f;
    i = i + (i >>> 8);
    i = i + (i >>> 16);
    return i & 0x3f;
}

答案 1 :(得分:1)

它是O(1),这是JDK 1.5 +的实现:

public static int bitCount(int i) {
    i = i - ((i >>> 1) & 0x55555555);
    i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
    i = (i + (i >>> 4)) & 0x0f0f0f0f;
    i = i + (i >>> 8);
    i = i + (i >>> 16);
    return i & 0x3f;
}

答案 2 :(得分:0)

任何处理有限大小输入的算法都具有 O(1) 的复杂度。

bitCount 适用于大小有限的输入。

因此 bitCount 的复杂度为 O(1)

相关问题