實例----二進制展開位中1的個數

題目描述:

對於任意非負整數,求二進制展開位中的1的個數

 

算法分析:

 

 

算法實現:


#include <iostream>
using namespace std;

int countOnes(unsigned int n)
{
	int ret = 0;

	while(n)	//數據仍然大於0
	{
		
		if(n & 1)	//如果二進制最後是1就計數
		{
			ret++;
		}
		n = (n >> 1);    //相當於減小二倍
		
	}

	return ret;

}


int main()
{

	//0x1000101011
	cout << "555:" << countOnes(555) << endl;
	//1010011010
	cout << "666:" << countOnes(555) << endl;

}

 

算法分析:

算法分析
算法名稱 時間複雜度(平均) 時間複雜度(最壞) 時間複雜度(最好) 空間複雜度
  O(\log n) O(\log n) O(\log n) 0(1)

每次右移一次,n減半,

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章