算法复杂度中大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
结论:代码执行的总时间T(n)与每行代码的执行次数成正比

大O复杂度表示法用于估算算法执行效率,忽略低阶、常量和系数,关注随着数据规模n增长的趋势。例如,O(n)代表线性复杂度,适用于简单的遍历,而O(n^2)代表平方复杂度,常见于双重循环。时间复杂度分析关键在于识别执行次数最多的代码段,且递归算法的时间复杂度与递归深度和单次递归操作的复杂度有关。
最低0.47元/天 解锁文章
1341

被折叠的 条评论
为什么被折叠?



