数据结构与算法(旧)
文章平均质量分 97
常见数据结构与算法讲解分析与实现(Java语言),包括链表、双链表、堆、栈、二叉树增删改查、二叉树递归非递归遍历、平衡二叉树、哈夫曼树、并查集、dijkstra算法、弗洛伊德算法、dfs、bfs算法以及快排、归并排序等八大排序。新版可订阅或者在公中号[bigsai]中观看。
程序员bigsai
坚持分享学习,写了一本原创数据结构与算法pdf分享给大家。
展开
-
数据结构与算法【01】—绪论
数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低内存占用,在这里数据结构起到相当重要的作用。此外数据结构也蕴含一些面向对象的思想,故学好掌握数据结构对逻辑思维处理抽象能力有很大提升。为什么学习数据结构与算法?如果你还是学生,那么这门课程是必修的,考研基本也是必考科目。工作在内卷严重的大厂中找工作数据结构与算法也是面试、笔试必备的非常重要的考察点。原创 2023-11-03 00:19:52 · 282 阅读 · 0 评论 -
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满!而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的!当我码完字准备睡觉时:写不好别睡觉!分析如果用数据结构与算法造出东西来呢?...原创 2019-09-21 18:15:27 · 464156 阅读 · 498 评论 -
数据结构与算法—前导
前言重要性数据结构与算法是程序员内功体现的重要标准之一,而数据结构的也应用在各个方面,更有程序=数据结构+算法这个被人认证的等式存在。并且数据结构与算法的应用无处不在,各个中间件开发者,架构师。他们都在努力的优化中间件、项目结构结构以及算法提高运行效率与内存占用。故学好数据结构是很重要的。数据结构概念数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关...原创 2019-07-25 23:53:34 · 4131 阅读 · 0 评论 -
数据结构与算法—栈详解
目录什么是栈设计与介绍数组实现结构设计push插入s什么是栈百度百科上,栈是这么定义的:栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素...原创 2019-08-13 18:51:04 · 7543 阅读 · 5 评论 -
数据结构与算法——二叉平衡树(AVL树)详解
AVL树是带有平衡条件的二叉查找树(平衡二叉树)。这个平衡条件必须要`容易保持`。而且要保证它的深度是O(logN). AVL的条件是左右树的高度差(`平衡因子`)不大于1;并且它的每个子树也都是平衡二叉树。原创 2019-08-25 11:41:21 · 7114 阅读 · 2 评论 -
数据结构与算法—递归算法(从阶乘、斐波那契到汉诺塔的递归图解)
目录递归介绍递归求阶乘递归求斐波那契递归解决汉诺塔总结递归介绍递归:就是函数自己调用自己。 子问题须与原始问题为同样的事,或者更为简单;递归通常可以简单的处理子问题,但是不一定是最好的。对于递归要分清以下概念:自己调用自己递归通常不在意具体操作,只关心初始条件和上下层的变化关系。递归函数需要有临界停止点,即递归不能无限制的执行下去。通常这个点为必须经过的一个数。递归通常能被其他...原创 2019-08-18 11:50:31 · 15258 阅读 · 17 评论 -
数据结构与算法—二叉树的层序、前序中序后序(递归、非递归)遍历
目录前言 层序遍历 前中后序遍历(递归) 前言 前面介绍了二叉排序树的构造和基本方法的实现。但是排序遍历也是比较重要的一环。所以笔者将前中后序.和层序遍历梳理一遍。了解树的遍历,需要具有的只是储备有队列,递归,和栈。这里笔者都有进行过详细介绍,可以关注笔者数据结构与算法专栏。持续分享,共同学习。层序遍历 层序遍历。听名字也知道是按层遍历。我们知道一个节点有左右节点。而每一层一层的遍...原创 2019-08-21 23:50:55 · 9066 阅读 · 2 评论 -
数据结构与算法—图论之dfs、bfs(深度优先搜索、宽度优先搜索)
文章目录前言深度优先搜索(dfs)前言在有向图和无向图中,如果节点之间无权值或者权值相等,那么dfs和bfs时常出现在日常算法中。不仅如此,dfs,bfs不仅仅能够解决图论的问题,在其他问题的搜索上也是最基础(但是策略不同)的两种经典算法。并且五大经典算法的回溯算法其实也是dfs的一种。dfs,bfs基础能够解决搜索类问题的大部分情况,只不过搜索随着数据增大而呈非线性的增长,所以两种算法在...原创 2019-09-05 23:19:32 · 7114 阅读 · 0 评论 -
数据结构与算法—哈夫曼树详解与构造
文章目录介绍介绍定义:给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。简而言之,就是按照一个贪心思想和规则进行树的构造,而构造出来的这个树的权值最小!其中WPL表示计算出的权值。至于为什么按照哈夫曼树方法构造得到的权重最小。这里...原创 2019-09-02 00:33:30 · 10933 阅读 · 2 评论 -
数据结构与算法—一文多图搞懂双链表
目录前言双链表介绍与单链表区别前言前面讲过线性表中顺序表和链表的实现和性质。但是在数据结构与算法中,双向链表无论在考察还是运用中都占有很大的比例,笔者旨在通过本文与读者一起学习分享双链表相关知识。双链表介绍与单链表区别结构上:...原创 2019-08-11 12:03:07 · 4937 阅读 · 1 评论 -
短小精悍的多源最短路径算法—Floyd算法
目录前言算法介绍前言在图论中,在寻路最短路径中除了Dijkstra算法以外,还有Floyd算法也是非常经典,然而两种算法还是有区别的。在单源正权值最短路径,我们会用Dijkstra算法来求最短路径,并且算法的思想很简单——贪心算法:每次确定最短路径的一个点然后维护(更新)这个点周围点的距离加入预选队列,等待下一次的抛出确定。但是虽然思想很简单,实现起来是非常复杂的,我们需要邻接矩阵(表)储存...原创 2019-09-28 11:48:17 · 7214 阅读 · 6 评论 -
数据结构与算法—单源最短路径dijkstra算法
介绍对于dijkstra算法,很多人可能感觉熟悉而又陌生,可能大部分人比较了解bfs和dfs,而对dijkstra和floyd算法可能知道大概是图论中的某个算法,但是可能不清楚其中的作用和原理,又或许,你曾经感觉它很难,那么,这个时候正适合你重新认识它。Dijkstra能是干啥的?Dijkstra是用来求单源最短路径的单源什么意思?从一个顶点出发,Dijkstra算法只能求一个顶点...原创 2019-09-15 19:55:04 · 8353 阅读 · 2 评论 -
数据结构与算法——并查集(不相交集合)
文章目录认识并查集认识并查集对于并查集(不相交集合),很多人会感到很陌生,没听过或者不是特别了解。实际上并查集是一种挺高效的数据结构。实现简单,只是所有元素统一遵从一个规律所以让办事情的效率高效起来。对于定于,百科上这么定义的:并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素...原创 2019-08-28 00:13:13 · 12683 阅读 · 3 评论 -
数据结构与算法—拓扑排序
目录介绍拓扑排序算法分析介绍拓扑排序,很多人都可能听说但是不了解的一种算法。或许很多人只知道它是图论的一种排序,至于干什么的不清楚。又或许很多人可能还会认为它是一种啥排序。而实质上它是对有向图的顶点排成一个线性序列。至于定义,百科上是这么说的:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u...原创 2019-09-08 18:28:23 · 25531 阅读 · 5 评论 -
数据结构于算法—线性表
通过前面[数据结构与算法前导](https://blog.csdn.net/qq_40693171/article/details/96913019)我么知道了数据结构的一些概念和重要性,那么我们今天总结下线性表相关的内容。当然,我用`自己的理解解`分享给大家。- 其实说实话,可能很多人依然分不清`线性表,顺序表,和链表`之间的区别和联系! - 线性表:`逻辑结构`, 就是对外暴露数据之间的关系,不关心底层如何实现。 - 顺序表、链表:`物理结构`,他是实现一个结构实际物理地址上的结构。比如顺序表原创 2019-08-04 13:15:34 · 4544 阅读 · 2 评论 -
数据结构与算法—二叉排序(查找)树
再数据结构中`树`、`图`才是数据结构标志性产物,(线性表大多都现成api可以使用),因为树的`难度相比线性表大一些`并且树的`拓展性很强`,你所知道的树、二叉树、**二叉排序树**,**AVL树**,线索二叉树、**红黑树**、B数、线段树等等高级数据结构。然而二叉排序树是所有的基础,所以彻底搞懂二叉排序树也是非常重要的。原创 2019-08-19 13:23:31 · 11639 阅读 · 0 评论 -
数据结构与算法—最小生成树(Prim算法和Kruskal算法算法详解)
在图论中,最小生成树也是一种常用算法,本文将从一些有趣的例子和来讲诉最小生成树的prim算法和kruskal算法。中间也夹杂了马克思主义理论,!原创 2019-10-18 18:45:39 · 10640 阅读 · 2 评论 -
数据结构与算法—队列详解
大纲前言 队列介绍基本属性 普通队列循环队列链式实现具体实现前言 栈和队列是一对好兄弟,前面我们介绍过数据结构与算法—栈详解,那么栈的机制相对简单,后入先出,就像进入一个狭小的山洞,山洞只有一个出口,只能后进先出(在外面的先出去)。而队列就好比是一个隧道,后面的人跟着前面走,前面人先出去(先入先出)。日常的排队就是队列运转形式的一个描述!所以队列的核心理念就是:先进先出!队列介绍基...原创 2019-08-16 01:18:41 · 6376 阅读 · 2 评论