您的位置:首页 > 其它

计算一个算法的时间复杂度

2014-04-23 11:16 363 查看
观察一个算法的时间复杂度,有效的思考方式是:看问题的规模随算法的推进不断递减的程度。

下面以一个求2的n次方的简单程序为例:

long long power2(int n)
long long poe =1;
while(0< n --)
pow <<= 1;
return pow;
}//O(n)
问题的规模,每次减少1,要执行n次,时间复杂度为O(n)。

优化后:

long long sqr(long long a) {return a*a}
long long power2(int n){
if (n==0) return 1;
return (n & 1) ? sqr(power2(n >> 1)) <<1 : sqr(power2(n >>1));

}
每执行一次递归,n就要除以2,所以时间复杂度为O(logn)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐