给出一段代码
void eat1(int n){
for(let i=0; i<n; i++){;
console.log("等待一天");
console.log("等待一天");
console.log("吃一寸面包");
}
}
记这个程序的运行时间为T(n)
int i=0执行1次
i<n 执行n+1次(因为最后一次也要比较)
i++以及for循环内的代码执行n次
那么T(n)=n+n+n=3n+2
时间复杂度一般会对式子进行简化
- 忽略常数项
- 忽略低阶项
- 忽略最高项系数
例如上面的式子简化后就变成T(n)=n,用大O计数法就是O(n)
那么怎么判断低阶项呢?
O(1)<O(log n)<O(n)<O(nlog n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
复杂度为对数的代码
void eat1(int n){
let a=1
while(sum<n){
sum*=2
}
}
设上述语句需要循环x次才能跳出循环
那么2x=n,x=log n