算法复杂度中大O的含义
推荐教程:北大硕士带你手撕Leetcode算法题
大O复杂度表示法
算法面试中, 经常会被问到,你写的算法复杂度是多少, 或者设计一个复杂度为 O(nlogn) 的算法复杂度分析是估算算法执行效率的方法,公式O(f(n))表示算法的复杂度,此方法即为大O复杂度表示法O(f(n))中n表示数据规模,f(n)表示运行算法所需要执行的指令数。
下面的代码非常简单,求 1,2,3…n 的累加和,我们来估算它的执行效率
假设每行代码执行的时间都一样为t:
•执行第2行代码需要时间t,第3,4行代码运行了n遍,需要的时间为2n*t
•这段代码总执行时间为(2n+1)* t
结论:代码执行的总时间T(n)与每行代码的执行次数成正比
看下面的代码,估算该段代码的执行时间
同样假设每行代码执行的时间都一样为t:
•执行第2行代码需要时间t
•第3行代码运行了n遍,需要时间为n*t
•第4、5行代码运行了n2次,需要时间为2n2 * t
•执行所有代码的总时间为 (2n2 + n + 1)* t
结论:代码执行的总时间