数据结构----算法复杂度分析
- 时间复杂度
- 常数阶
O(1):跟问题规模没有关系
1 2 3 4 5 | int i = 0; int n = 100; printf ( "test" ); printf ( "test" ); printf ( "test" ); printf ( "test" ); //算法时间复杂度为O(1) |
2、线性阶
O(n):随着问题规模n的增大,对应的计算次数成直线增长
1 2 3 4 5 6 | int i = 0; int n = 100; int sum = 0; for (i=0; i<n; i++) { sum = sum + i; } //算法时间复杂度为O(n) |
3、平方阶
O(n^2):随着问题规模n的增大,对应的计算次数成抛物线增长
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int i = 0, j = 0; int n = 100; int sum = 0; for (i=0; i<n; i++) { for (j=0; j<n; j++) { printf ( "ok" ); } } //算法时间复杂度为O(n^2) for (i=0; i<n; i++) { for (j=i; j<n; j++) { printf ( "ok" ); } } //n + n-1 + n-2 + ... + 1 = n*(n+1)/2 ---> O(n^2) //算法时间复杂度为O(n^2) |
4、对数阶
O(log(n)):随着问题规模n的增大,对应的计算次数成对数线增长
1 2 3 4 5 6 | int i = 1; int n = 100; while (i < n) { i = i * 2; } //2^x = n --->x = log(n) //算法时间复杂度为O(log(n)) |
5、总结
常用时间复杂度耗费时间从小到大排列:
O(1) < O(log(n)) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
- 空间复杂度
O(n)表示基本代码占据的存储空间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!