算法_2022_时间&空间复杂度
logn是什么意思_时间复杂度 O(log n) 意味着什么?
时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。
1、时间复杂度
一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大是,T(n)/f(n)的极限值为不等于零的常熟,则称f(n)是T(n)的同数量级函数,记作T(n )= O(f(n)),称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。
复杂度量级(按数量级递增)
- 常量阶
- 对数阶
- 线性阶
- 线性对数阶
- 平方阶
、立方阶
次方阶
- -----------------上为多项式量级-------下为非多项式量级
- 指数阶
- 阶乘阶
2、空间复杂度
空间复杂度比较常用的有:O(1)、O(n)、O(n²)
3、应用
排序方法 | 平均情况 | 最好情况 | 最坏情况 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
冒泡排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 不稳定 |
插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
希尔排序 | O(n^(1.3—2)) | O(n^1.3) | O(n^2) | O(1) | 不稳定 |
归并排序 | O(n*log2(n)) | O(n*log2(n)) | O(n*log2(n)) | O(n) | 稳定 |
快速排序 | O(n*log2(n)) | O(n*log(n)) | O(n^2) | O(nlog2n) | 不稳定 |
堆排序 | O(n*log2(n)) | O(n*log2(n)) | O(n*log2(n)) | O(1) | 不稳定 |
计数排序 | O(n+k) | O(n+k) | O(n+k) | O(n+k) | 稳定 |
桶排序 | O(n+k) | O(n) | O(n^2) | O(n+k) | 稳定 |
基数排序 | O(n*k) | O(n*k) | O(n*k) | O(n+k) | 稳定 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了