我最近接受了一次采访,并被要求找出提供的整数位数。我有这样的事情:
#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)。
我错了吗?