常见数据结构对比

         最近看一本讲编程艺术的书,里面提了个问题:常见数据结构有哪些?以前都是用到什么数据结构,去查相应资料,一直没仔细想过这个问题,一时心血来潮,决定做个表格,总结下几种数据结构的特点。如果哪位大神发现了错误,请通知小弟一声,小弟马上修改,谢谢。

名称

描述

随机访问时间复杂度

特点

优点

缺点

数组

数据类型的元素按一定顺序排列的集合

O(1)

连续存储

访问快

大小固定

存储效率低

向量

其实向量是一个动态数组

O(1)

连续存储

动态分配数组大小

增长过快的时候比较耗资源

链表

由一系列称为表的节点的对象组成

O(N)

不连续、大小不固定

中间任意位置添加删除元素的都非常的快

空间和时间额外耗费较大

只能在一端进行插入和删除操作

O(N)

LIFO

提供后进先出的存取方式

存取慢

队列

只能一端进一端出

O(N)

FIFO

提供后进后出的存取方式

存取慢

堆是一种特殊的树形数据结构,每个结点都有一个值

O(N lg N)

可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)

插入,删除块,对最大数据的项存取很快

对其他数据项存取很慢

哈希表

根据关键码值而直接进行访问的数据结构

O(1)

键值对存储,访问快,元素不能重复

访问快

空间消耗大

二叉树

每个父节点最多只能有两个子节点。每个父节点的子节点都是从左到右的树

O(logn)

 

高效创建和更新

删除节点比较麻烦

是一种复杂的非线性数据结构

多项式

 

直观表示模型

慢、算法复杂

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值