首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bitCount()的大O?

bitCount()的大O?
EN

Stack Overflow用户
提问于 2017-05-29 21:08:49
回答 3查看 1.9K关注 0票数 5

什么是位计数的大O?我不知道这个方法是如何工作的,但我假设它是在O(logn)中完成的。

特别针对此代码(其中x= 4,y= 1):

代码语言:javascript
复制
return Integer.bitCount(x^y);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-29 21:14:02

给定它的实现,该方法由6个按顺序执行的O(1)语句组成,因此它是O(1)。

代码语言:javascript
复制
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;
}
票数 7
EN

Stack Overflow用户

发布于 2017-05-29 21:15:23

它是O(1),下面是它对JDK 1.5+的实现:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2021-07-06 16:06:46

任何在有限大小输入上工作的算法都具有O(1)的复杂性。

bitCount用于有限大小的输入。

因此,bitCount具有O(1)的复杂性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44250311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档