这里说的对数都是指以2为底的对数。
如果一个算法用常数时间将问题的大小消减为原来的1/2,则这个算法就是O(logN)的。
常见的O(logN)算法举例:对分查找、欧几里得算法、幂运算。
欧几里得求两个数的最大公因数
unsigned int Gcd(unsigned int M, unsigned int N)
{
using int Rem;
while(N>0)
{
Rem = M % N;
M = N;
N = Rem;
}
retrun M;
}
这里说的对数都是指以2为底的对数。
如果一个算法用常数时间将问题的大小消减为原来的1/2,则这个算法就是O(logN)的。
常见的O(logN)算法举例:对分查找、欧几里得算法、幂运算。
欧几里得求两个数的最大公因数
unsigned int Gcd(unsigned int M, unsigned int N)
{
using int Rem;
while(N>0)
{
Rem = M % N;
M = N;
N = Rem;
}
retrun M;
}