![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 92
白大锅
专注Java、.net、php、go、python、小程序、安卓app、公众号、大数据、爬虫等开发、定制、远程、文档编写指导等 Java领域优质创作者 华为云/阿里云/InfoQ/51CTO等平台优质作者、专注于Java技术领域、工具推广、程序设计
展开
-
数据结构与算法之图的进阶
万字长文文教你学会什么是图原创 2021-12-01 17:29:12 · 16327 阅读 · 15 评论 -
数据结构与算法之图入门
1.图的实际应用在现实生活中,有许多应用场景会包含很多点以及点点之间的连接,而这些应用场景我们都可以用即将要学习的图这种数据结构去解决。地图:我们生活中经常使用的地图,基本上是由城市以及连接城市的道路组成,如果我们把城市看做是一个一个的点,把道路看做是一条一条的连接,那么地图就是我们将要学习的图这种数据结构。电路图:下面是一个我们生活中经常见到的集成电路板,它其实就是由一个一个触点组成,并把触点与触点之间通过线进行连接,这也是我们即将要学习的图这种数据结构的应用场景2.图的定义及分类原创 2021-11-29 14:05:58 · 1858 阅读 · 6 评论 -
数据结构与算法之并查集
并查集并查集是一种树型的数据结构 ,并查集可以高效地进行如下操作:查询元素 p和元素q是否属于同一组合并元素 p和元素q所在的组1.1.并查集结构并查集也是一种树型结构,但这棵树跟我们之前讲的二叉树、红黑树、B树等都不一样,这种树的要求比较简单:1.每个元素都唯一的对应一个结点;2.每一组数据中的多个元素都在同一颗树中;3.一个组中的数据对应的树和另外一个组中的数据对应的树之间没有任何联系;4.元素在树中并没有子父级关系的硬性要求;1.2 并查集API设计类名UF原创 2021-11-25 16:30:33 · 5429 阅读 · 21 评论 -
数据结构与算法之树的进阶
文章目录一、平衡树1.1 2-3 查找树1.1.1.2-3查找树的定义1.1.2 查找1.1.3 插入1.1.3.1 向2-结点中插入新键1.1.3.2 向一棵只含有一个3-结点的树中插入新键1.1.3.3 向一个父结点为2-结点的3-结点中插入新键1.1.3.4 向一个父结点为3-结点的3-结点中插入新键1.1.3.5 分解根结点1.1.4 2-3 树的性质1.1.5 2-3树的实现1.2 红黑树1.2.1 红黑树的定义1.2.2 红黑树结点API1.2.3 平衡化1.2.3.1 左旋1.2.3.2 右旋原创 2021-11-22 14:30:52 · 8107 阅读 · 23 评论 -
数据结构与算法之优先队列
优先队列普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况下计算机的任务都是有优先级的,我们需要在这些计算机的任务中找出优先级最高的任务先执行,执行完毕后就需要把这个任务从队列中移除。普通的队列要完成这样的功能,需要每次遍历队列中的所有元素,比较并找出最大值,效率不是很高,这个时候,我们就可以使用一种特殊的队列来完成这种需求,优先队列。优先队列按照其作用不同,可以分为以下两种:最原创 2021-11-15 10:20:47 · 7756 阅读 · 30 评论 -
数据结构与算法之堆
1.1.堆的定义堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。堆的特性:1.它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。2. 它通常用数组来实现。具体方法就是将二叉树的结点按照层级顺序放入数组中,根结点在位置1,它的子结点在位置2和3,而子结点的子结点则分别在位置4,5,6和7,以此类推。如果一个结点的位置为k,则它的父结点的位置为[k/2],而它的两个子结点的位置则分别原创 2021-11-12 10:07:41 · 15271 阅读 · 13 评论 -
数据结构与算法之树的入门(二叉树)
二叉树目录二叉树入门一、 树的基本定义二、树的相关术语三、二叉树的基本定义四、二叉查找树的创建4.1.二叉树的结点类4.2. 二叉查找树API设计4.3.二叉查找树实现4.4.二叉查找树其他便捷方法4.4.1.查找二叉树中最小的键`在这里插入代码片`4.4.2.查找二叉树中最大的键五、二叉树的基础遍历5.1.前序遍历5.2.中序遍历5.3.后序遍历六、二叉树的层序遍历七、二叉树的最大深度问题八、折纸问题二叉树入门之前我们实现的符号表中,不难看出,符号表的增删查操作,随着元素个数N的增多,其耗时也是线原创 2021-11-09 10:44:52 · 21875 阅读 · 17 评论 -
数据结构与算法之符号表
符号表简介符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据,我们可以根据键来查找对应的值。符号表中,键具有唯一性。符号表在实际生活中的使用场景是非常广泛的,见下表:应用查找目的键值字典找出单词的释义单词释义图书索引找出某个术语相关的页码术语一串页码网络搜索找出某个关键字对应的网页关键字网页名称符号表API设计结点类:类名Node<Key,Value>原创 2021-11-05 09:58:37 · 5607 阅读 · 6 评论 -
超硬核讲解数据结构与算法之线性表
线性表目录线性表简介一、顺序表1.1.顺序表的实现1.2.顺序表的遍历1.3.顺序表的容量可变1.4.顺序表的时间复杂度1.5.java中ArrayList实现二、链表2.1.单向链表2.1.1.单向链表API设计2.1.2. 单向链表代码实现2.2. 双向链表2.2.1. 结点API设计2.2.2.双向链表API设计2.2.3.双向链表代码实现2.2.4.java中LinkedList实现2.3.链表的复杂度分析2.4.链表反转2.5.快慢指针2.5.1.中间值问题2.5.2.单向链表是否有环问题2.5.原创 2021-11-03 16:40:56 · 28538 阅读 · 15 评论 -
数据结构与算法之排序(冒泡、选择、插入、希尔、归并、快速)
排序目录一、简单排序1.1.Comparable 接口介绍1.2.冒泡排序1.3.选择排序1.4.插入排序二、高级排序2.1.希尔排序2.2.归并排序2.2.1. 递归2.2.2 归并排序2.3.快速排序2.4.排序的稳定性一、简单排序在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来我们要学习一些常见的排序算法。在java的开发工具包jdk中,已经给原创 2021-11-01 14:16:04 · 31328 阅读 · 21 评论