c – 权力的时间复杂度()
作者:互联网
参见英文答案 > The most efficient way to implement an integer based power function pow(int, int) 17个
我实现了这个函数power(),它接受两个参数a和b并计算ab.
typedef long long int LL;
LL power(int a,int b)
{
int i = 1;
LL pow = 1;
for( ; i <= b ; ++i )
pow *= a;
return pow;
}
给定:ab落在long long int的范围内.
问题:如何降低算法的时间复杂度?
解决方法:
Squaring的指数.
非递归实现
LL power(int a, int b)
{
LL pow = 1;
while ( b )
{
if ( b & 1 )
{
pow = pow * a;
--b;
}
a = a*a;
b = b/2;
}
return pow;
}
该算法需要log2b平方和最多log2b乘法.
运行时间为O(log b)
标签:c-3,c,algorithm,time-complexity 来源: https://codeday.me/bug/20190926/1821710.html