【发布时间】:2013-06-09 12:47:22
【问题描述】:
我最近接受了一次采访,并被要求找出提供的整数位数。我有这样的事情:
#include <iostream>
using namespace std;
int givemCountOnes (unsigned int X) {
int count =0;
while (X != 0 ) {
if(X & 1)
count++;
X= X>>1;
}
return count;
}
int main() {
cout << givemCountOnes (4);
return 0;
}
我知道有更好的方法,但这不是这里的问题。
问题是,这个程序的复杂性是多少?
由于它用于输入中的位数,人们说这是 O(n),其中 n 是输入中的位数。
但是我觉得由于上限是sizeof(unsigned int) 即64位,我应该说顺序是o(1)。
我错了吗?
【问题讨论】:
-
我相信有人会编辑它...可能是我,迟早。但是你能试着学习正确拼写单词并正确使用标点符号吗?
标签: c++ algorithm bit-manipulation