数据结构学习杂记
黑马教程:https://www.bilibili.com/video/BV17F411T7Ao?p=189
※,数据结构
- 数据结构是计算机底层存储、组织数据的方式。
- 是指数据之间是以什么方式排列在一起的。
- 数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。
- 一般情况下,精心选择的数据结构能够带来更高的运行或存储效率。
※,如何学习(简单版)
- 每种数据结构长什么样子
- 如何添加数据
- 如何删除数据
※,常见的数据结构
- 栈:后进先出,先进后出。栈是一个容器,一端开口,一端封闭。像个杯子。
- 队列:后进后出,先进先出。两端开口的容器,上面是后端,下面是前端。
- 数据从后端进入队列模型的过程称为:入队列
- 数据从前端离开队列模型的过程称为:出队列
- 数组:数组是一种查询快,增删慢的模型。
- 查询速度快:查询数据通过(整个数组的)地址值和索引定位,查询任意数据耗时相同。(元素在内存中是连续存储的)
- 删除效率低:要将原始数据删除,同时后面每个数据前移。
- 添加效率极低:添加位置后的每个数据后移,再添加元素。如果数组已经满了,还需要扩容。
- 链表:链表中的结点是独立的对象,在内存中是不连续的,每个结点包含数据值和下一个结点的地址。
- 链表查询慢,无论查询哪个数据都要从头开始找。
- 链表增删相对快(相对于数组而言)
- 链表有单向链表和双向链表。单向链表记录数据和下一个结点的地址。双向链表记录数据和前后结点的地址。
- 二叉树:任意节点的度<=2。度即每个节点的子节点数量。
- 二叉查找树:又称二叉排序树或二叉搜索树。
- 二叉查找树特点:
- 每个节点上至多两个子节点
- 任意节点上的左子树的值都小于当前节点。
- 任意节点上的右子树的值都大于当前节点。
- 二叉查找树添加节点规则:小的存左边,大的存右边,一样的不存。
- 二叉查找树特点:
- 平衡二叉树:任意节点左右子树高度差不超过1。
- 红黑树:是一种二叉查找树,不一定是平衡二叉树。参考此视频教程
- 红黑树的增删改查性能都很好。
※,