时间复杂度 - 各种数据结构的时间复杂度分析

Posted frankcui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间复杂度 - 各种数据结构的时间复杂度分析相关的知识,希望对你有一定的参考价值。

参考

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)
  • PopO(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)

以上是关于时间复杂度 - 各种数据结构的时间复杂度分析的主要内容,如果未能解决你的问题,请参考以下文章

数组各种排序算法和复杂度分析

C++实现各种排序以及复杂度,稳定性分析

各种查找算法的选用分析(顺序查找二分查找二叉平衡树B树红黑树B+树)

数据结构与算法复杂度分析

分析下面的代码的时间复杂度,使用大O阶记法表示

复杂度分析