运行代码时,执行任何一条语句都需要花费时间。
for(let i = 0, len = 100; i < len; i++) {
console.log(i)
}
上面的代码可以拆解成三部分:
let i = 0, len = 100
合计运行了 2 次i < len
运行了 n + 1 次console.log(i)
和i++
合计运行了 2n 次
假设每个语句执行时间为一个时间单元,用 T(n) 来表示程序运行了多长时间,那么上面代码的运行时间就可以表示为 T(n) = 3n + 3
,其中 n 称为问题的规模。
当 n 很大时,其他项相比最高次项来说小的可以忽略,所以一般只保留最高次项并忽略该项的系数。于是,上面的时间函数可以简化为 T(n) = n
,简化后的式子被称为这个程序的时间复杂度,记为 O(f(n))
,f(n)
就是简化后的式子,对于上面的例子来说,时间复杂度就为 O(n)
。
常见的大小关系如下图: