JAVA:基础数据结构概要

堆栈

first-in last-out

队列

first-in first-out

数组

特点:
1.查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过数组的索引可以快速查找某一个元素
2.增删慢:数组的长度是固定的,我们想要增加\删除一个元素,必须创建一个新数组,把源数组的数据复制过来
在这里插入图片描述
在堆内存中,频繁的创建数组,复制数组中的元素,销毁数组,所以效率很低。

链表

查询慢:链表中地址不是连续的,每次查询元素,都必须从头开始查询
增删快:链表结构,增加、删除一个元素,对链表的整体结构没有影响,所以增删快。

链表中的每一个元素也称之为一个节点,一个节点包含了一个数据源(存储数组),两个指针域(存储地址)

单向链表:链表中只有一条链子,不能保证元素的顺序(存储元素和取出元素的顺序有可能不一致)
双向链表:链表中有两条链子,有一条链子是专门记录元素的顺序的,是一个有序的集合
在这里插入图片描述
细节 https://www.cnblogs.com/Tanggula-pioneer/p/11825745.html

一、二叉树
分支不能超过两个的树
分为左子树(左孩子)与右子树(右孩子)

二、二叉排序树 / 查找树
在二叉树的基础上,元素是有大小顺序的
左子树小,右子树大。

***三、平衡树 ***
任意节点的子树的|高度差| <= 1
四、不平衡树
左孩子数量不等于右孩子数量

五、红黑树
一种特殊的二叉查找树
特点:
趋近于平衡树,查询的速度非常的快,查询叶子节点的最大次数和最小次数不能超过两倍。
性质:
1.每个节点不是红色就是黑色
2.不可能有连在一起的红色节点
3.根节点都是黑色 root(入度为0)
4.每个红色节点的两个子节点都是黑色。叶子节点都是黑色(最后都有一个Null节点):出度为0,满足了性质就可以近似的平衡了,不一定要红黑,可以为其他的。
在这里插入图片描述

查找算法:
遍历(for循环),
二分(必须有序),
*哈希:最高效,O(1),会有hash冲突, jdk1.8中hashmap是由数组+链表+红黑树组成,红黑树的作用就是解决hash冲突,
索引,
bfs&dfs,
平衡树,
*B+树,
B-树,
*红黑树,
*二叉搜索树

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值