时间复杂度 - 各种数据结构的时间复杂度分析
参考
https://cloud.tencent.com/developer/ask/112047
https://blog.csdn.net/chao2016/article/details/82425317
详细解析
数组
- 设置,在特定索引处检查元素:O(1)
- 搜索:O(n)数组是否未排序,O(log n)如果数组排序并使用类似于二分搜索的东西,
Delete
阵列中没有可用的操作。根据我们的要求,我们可以通过将其设置为某个特定值来象征性地删除元素,例如-1,0等- 同样,
Insert
对于数组基本上Set
是在开始时提到的
数组列表:
- 添加:摊销O(1)
- 删除:O(n)
- 包含:O(n)
- 尺寸:O(1)
链接列表:
- 插入:O(1),如果在头部完成,则O(n)在其他任何地方,因为我们必须线性移动链表到达该位置。
- 删除:O(1),如果在头部完成,则O(n)在其他任何地方,因为我们必须线性移动链表到达该位置。
- 正在搜索:O(n)
双链表:
- 插入:如果在头部或尾部完成,则O(1),O(n)如果在其他任何地方,因为我们必须线性移动链表到达该位置。
- 删除:O(1),如果在头部或尾部完成,则O(n)在其他任何地方完成,因为我们必须线性移动链表到达该位置。
- 正在搜索:O(n)
堆栈:
- 推:O(1)
- Pop:O(1)
- 上:O(1)
- 搜索(像查找,像一个特殊的操作):O(n)(我猜是这样)
队列/ Deque /循环队列:
- 插入:O(1)
- 删除:O(1)
- 尺寸:O(1)
二进制搜索树:
- 插入,删除和搜索:平均情况:O(log n),最差情况:O(n)
红黑树:
- 插入,删除和搜索:平均情况:O(log n),最差情况:O(log n)
堆/ PriorityQueue(最小/最大):
- 查找最小值/查找最大值:O(1)
- 插入:O(log n)
- 删除最小值/删除最大值:O(log n)
- 提取最小/提取最大值:O(log n)
- 查找,删除(如果有的话):O(n),我们将不得不扫描所有的元素,因为它们没有像BST那样排序
HashMap中/Hashtable/ HashSet的:
- 插入/删除:O(1)
- 重新大小/散列:O(n)
- 包含:O(1)
分类:
时间复杂度
posted on 2019-12-23 21:48 frank_cui 阅读(3769) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?