数组
>设置,检查特定索引处的元素:O(1)
>搜索:O(n)如果数组未排序,O(log n)如果数组排序和使用二进制搜索,
>正如Aivean指出的,数组上没有可用的删除操作。我们可以通过将元素设置为某个特定值来象征性地删除元素,例如-1,0等,具体取决于我们的要求
>类似地,对于数组的插入基本上如开头所述设置
ArrayList:
>添加:摊销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),Worst情况:O(log n)
Heap / PriorityQueue(min / max):
>查找最小/查找最大值:O(1)
> Insert:O(log n)
>删除最小/删除最大值:O(log n)
>提取最小/提取最大值:O(log n)
>查找,删除(如果提供):O(n),我们将不得不扫描所有的元素,因为他们没有像BST
HashMap / Hashtable / HashSet:
>插入/删除:O(1)摊销>重新调整大小/散列:O(n)>包含:O(1)