数据结构场景选择

                                   数据结构场景选择

下图显示了常用数据的时间复杂度

数组

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

附上google一张图

这里写图片描述

在附上中文的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值