数据结构和算法——2.算法复杂度
算法复杂度
算法分析
➢ 同一算法用不同语言实现,用不同编译器,或是在不同计算机上运行,效率均不同
➢ 使用绝对时间衡量算法效率不合适
➢ 基本操作重复执行的次数作为算法的时间度量
判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数
算法复杂度的记法
➢ 定义:
• 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析
T(n)随n的变化情况,并确定T(n)的数量级。
• 算法的时间复杂度,记作:T(n)=O(f(n))。表示随问题规模n的增大,算法执行时
间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。
• 其中f(n)是问题规模n的某个函数。
➢ 用大写O()来体现算法时间复杂度的记法,称之为大O记法。
➢ O(1)为常数阶,O(n)为线性阶,O(n^2)为平方阶。
算法的时间复杂度
- 常数阶:只有执行次数的差异,跟问题规模n的取值无关,所以为O(1)时间复杂度
- 线性阶:O(n)
- 对数阶:O(logn)
- 平方阶:O(n^2),O(mn)
EXAMPLE
- 嵌套循环
int i, j; for (i = 0; i < n; i++) { for (j = i; j < n; j++) { // 注意 j = i 而不是0 // 时间复杂度为O(1)的程序步骤序列 } }
时间复杂度为O(n^2)
常见的算法时间复杂度

算法的空间复杂度
➢ 算法的空间复杂度通过计算算法所需的存储空间实现,记作S(n)=O(f(n)),
其中n为问题的规模,f(n)为语句关于n所占存储空间的函数。
• 可以理解为函数内局部变量的空间
➢ 若算法执行时所需的辅助空间相对于输入数据量而言是个常数,则称此算法的空间复杂度为O(1)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~