java中的数据结构复杂么_java – 各种数据结构的时间复杂性是什么?

数组

>设置,检查特定索引处的元素: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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值