常用数据结构小结

常用数据结构总结

数据结构特性备注
数组 Array一维,多维数组;线性排列的数据有序数组可以采用二分查找,提高效率
栈 Stack先进后出(FILO),后进先出(LIFO)在特定时刻只有一个数据项可以被读取或者被删除
队列 Queue先进先出(FIFO)在特定时刻只有一个数据项可以被读取或者被删除
单向链表从一端开始遍历所有数据,适合单向存储场景,例如HashMap搜索的复杂度和无序数组差不多。但是插入和删除节点比无序数组快,因为链表不需要移动任何东西
双向链表从两端开始遍历所有数据 适合双向存储场景,例如LinkedHashMap同单向链表
可以分出多个树枝,分出来的树枝还可以再分既能像链表那样快速的插入和删除,又能像有序数组那样快速查找
二叉树一个节点的左子节点的关键字值小于这个节点,右子节点的关键字值大于或等于这个节点;插入一个节点需要根据这个规则进行插入同树
红黑树1.节点都有颜色;2.在插入和删除的过程中,要遵循保持这些颜色的不同排列的规则。例如Java8的HashMap同树

小结:

  • 数组:适合有读写,无序数组搜索效率不高,有序数组可以二分法搜索。但是插入和删除某个节点效率低
  • 链表:很适合有插入和删除节点操作的场景。特别在复制时间远大于比较时间的情形,还能解决内存使用率问题。但是搜索效率低
  • 红黑树:解决二叉树不平衡问题;既有链表的插入和删除的效率,又有”有序数组”查询的效率

PS:
强类型:存储数据元素类型必须在初始化时指定。这样在运行时,不需要耗费额外的时间来定义数组类型,能够大大提升运行效率

各个算法的效率,请参看这里数据结构和算法

Reference

常用数据结构和算法操作效率的对比总结

数据结构与算法

最全的数据结构解析与归纳

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值