常见的几种数据结构的插入、查找、删除操作的执行性能

数组

数组采用一段连续的存储单元来存储数据。

因为存储的数据是连续的,所以

  • 插入和删除操作,如果操作的对象不是最后一个元素,就会涉及到数组元素的移动,其平均复杂度为O(n)
  • 对于指定下标的查找,时间复杂度为O(1)
  • 对于给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n)
  • 对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn)

线性链表

链表一般用是非连续性的存储空间来存储数据

由于链表的每个元素都指向下一个元素,且是非连续的空间,所以

  • 对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结点左右的引用即可,时间复杂度为O(1)
  • 对于查找操作,需要遍历链表逐一进行比对,复杂度为O(n)

哈希表

哈希表是数组和链表的结合,他的头部是一个数组,数组的每个节点都是链表的头节点

  • 不考虑哈希冲突的情况下,添加、删除、查找,仅需一次定位即可完成,时间复杂度为O(1)

转载于:https://juejin.im/post/5cbdd6a35188250a9f279e8e

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值