1.计算时间复杂度的基本流程
时间复杂度计算主要分为3个步骤:
- 先找出算法的基本操作
- 计算基本语句的执行次数的数量级
- 用O记号表示算法的时间性能
2. 求两数最大公约数
- 问题描述:求a, b两正整数的公约数。
- 相关定理:已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c)。
该方法名为欧几里得算法(辗转相除法),伪代码如下:
function Euclid(a,b)
1:if b = 0 then
2: return a;
3:end if
4:return Euclid(b, a mod b);
3. 时间复杂度计算–最大公约数
该部分以求两正整数公约数为例,计算时间复杂度。
a mod d
每迭代一次,a至少减少一半以上,时间复杂度为logn
;- Euclid函数多次迭代,时间复杂度为
n
; - 因Euclid函数每迭代一次,需要计算一次
a mod d
求余,故总时间复杂度为nlogn
。