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)