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