文章目录
- 前言
- 数组
- 链表
- 单向链表
- 双向链表
- 双向链表
- 树
- 二叉搜索树
- 红黑树
- B树
- B+树
- 堆
- 优先队列排序算法(重点)
- 栈
- 栈实现
- 单调栈算法(可不学)
- 图
前言
这一篇文章是因为有几个玩的比较好的朋友觉得我DS学的还行,然后他们也要准备考研了(有24也有25的),就希望我出一篇讲DS的文章,所以就有了这篇文章。
(毕竟现在的互联网好像是不论是小中大厂好像都喜欢问算法哈哈哈,也算给自己复习一下)
其实掌握这些数据结构最快速的方法就是先了解基础,自己动手实现一边,然后分析这些结构可以用在什么场景下。
然后基于他们的特性去刷题。
比如我做树的题的时候,一定最先想到的就是递归,左子树递归,右子树递归等操作。
要求O(1)时间复杂度想到的就是Hash表,要求无额外空间使用,那就是原地算法。
字符串顺序颠倒,反转,想到手摇算法等等。
附一张LeetCode刷题情况(哈哈哈,很多都是补卡的)。
反正刷算法,最重要的应该就是perseverance。
数组
链表
单向链表
单向链表的CRUD
双向链表
双向链表的CRUD
双向链表
树
二叉搜索树
红黑树
B树
B+树
堆
优先队列排序算法(重点)
优先队列排序算法我第一次见到是再MySQL中。
对于MySQL5.6之后,会有一个算法叫做优先队列排序算法,大概方式就是维护一个大小为limit X中X数量的大顶堆,然后遍历所有数据并替换大顶堆的值,这样子就不需要对无用的数据进行排序了。并且我也在2023的考研题目中一眼就看到了基于优先队列排序算法的题目,所以我感觉这个算法思路还是很妙的。
栈
栈实现
顺序栈和链栈详解