算法的时间复杂度与空间复杂度
常见的时间复杂度量级有:
- 常数阶O(1)
- 对数阶O(logN)
- 线性阶O(n)
- 线性对数阶O(nlogN)
- 平方阶O(n²)
- 立方阶O(n³)
- K次方阶O(n^k)
- 指数阶(2^n)
上面从上至下依次的时间复杂度越来越大,执行的效率越来越低。
1.常数阶O(1)
int i = 1; int j = 2; ++i; j++; int m = i + j;
消耗的时候并不随着某个变量的增长而增长
2.线性阶O(n)
for(i=1; i<=n; ++i) { j = i; j++; }
消耗的时间是随着n的变化而变化的
3.对数阶O(logN)
int i = 1; while(i<n) { i = i * 2; }
2 的 x 次方等于 n,那么 x = log2^n
4.线性对数阶O(nlogN)
for(m=1; m<n; m++) { i = 1; while(i<n) { i = i * 2; } }
5.平方阶O(n²)
for(x=1; i<=n; x++) { for(i=1; i<=n; i++) { j = i; j++; } }
空间复杂度比较常用的有:O(1)、O(n)、O(n²)
1.空间复杂度 O(1)
int i = 1; int j = 2; ++i; j++; int m = i + j;
代码中的 i、j、m 所分配的空间都不随着处理数据量变化
2.空间复杂度 O(n)
int[] m = new int[n] for(i=1; i<=n; ++i) { j = i; j++; }
第一行new了一个数组出来,这个数据占用的大小为n,这段代码的2-6行,虽然有循环,但没有再分配新的空间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现