其他分享
首页 > 其他分享> > c – 权力的时间复杂度()

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