![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 66
victorgk
Talk is cheap, show me the code.
展开
-
算法与数据结构(八):树之红黑树
博主会对算法与数据结构会不断进行更新,敬请期待,如有什么建议,欢迎联系。二叉树中最特殊的红黑树可以算是其中一个,我们知道jdk8中对HashMap进行了优化,底层数据结构采用了数组+链表+红黑树,当链表达到8时,或数组达到64时就会转成红黑树。红黑树可以说是2-3查找树的升级,红黑树也是一种平衡树,平衡树解决了如果插入的数据为有序元素,例如:1,2,3,4,5,6则二叉树就会变成链表的问题。红黑树的定义:红黑树是含有红黑链接,并满足下列条件的二叉平衡树:红链接均为左连接;没有任何一个节..原创 2021-02-09 17:38:06 · 154 阅读 · 1 评论 -
算法与数据结构(七):优先队列
博主会对算法与数据结构会不断进行更新,敬请期待,如有什么建议,欢迎联系。我们知道队列具有先进先出的特性,栈具有先进后出的特性,那么有没有一种数据结构可以根据自己的需求,以一定的规则从队列中弹出呢,优先队列就是实现这种目标的数据结构。一般情况下,计算机的任务都是有优先级的,我们需要从所有任务中找到优先级最高的任务优先执行,执行完毕后把这个任务从队列中移除。普通的队列需要完成这种要求,需要每次从队列中遍历所有元素找出最大值,效率不是很高,这个时候我们就可以采用一种数据结构来完成这种需求,那就是优先队列。在..原创 2021-02-09 16:27:00 · 359 阅读 · 0 评论 -
算法与数据结构(六):堆
算法与数据结构(六):堆博主会对算法与数据结构会不断进行更新,敬请期待,如有什么建议,欢迎联系。堆的特性:堆的定义:堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。堆的特性它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。它通常用数组来实现。具体方法就是将二叉树的结点按照层级顺序放入数组中,根结点在位置1,它的子结点在位置2和3,而子结点的子结点则分别在位置4,5原创 2021-01-28 15:15:39 · 166 阅读 · 4 评论 -
算法与数据结构(六):树之折纸问题
算法与数据结构(六):树之折纸问题博主会对算法与数据结构会不断进行更新,敬请期待,如有什么建议,欢迎联系。树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、单位的组织架构、等等。树是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树的相关术语:结点的度:一个结点含有的子树的个数称为该结点的度;叶结点:度为0的结点称为叶结点,也可以叫做终端结点分支原创 2020-12-12 14:17:10 · 361 阅读 · 0 评论 -
算法与数据结构(五):树之二叉树
算法与数据结构(五):树之二叉树博主会对算法与数据结构会不断进行更新,敬请期待,如有什么建议,欢迎联系。树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、单位的组织架构、等等。树是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树的相关术语:结点的度:一个结点含有的子树的个数称为该结点的度;叶结点:度为0的结点称为叶结点,也可以叫做终端结点原创 2020-12-11 22:22:18 · 105 阅读 · 0 评论 -
算法与数据结构(四):符号表
算法与数据结构(四):符号表博主会对算法与数据结构会不断进行更新,敬请期待,如有什么建议,欢迎联系。符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据,我们可以根据键来查找对应的值。符号表是最简单的键值对集合,是Hashmap最简单的底层实现,底层可以由数组或链表实现,在这里博主使用链表进行了实现。符号表的实现代码如下:package com.victor.symbol;import java.io.Seri原创 2020-12-11 22:05:27 · 223 阅读 · 0 评论 -
算法与数据结构(三):线性表之队列
算法与数据结构(三):线性表之队列博主会对算法与数据结构会不断进行更新,敬请期待,如有什么建议,欢迎联系。线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。线性表分为:顺序表,链表,栈,队列。队列属于线性表的一种,具有先进先出的特点,底层可以由数组或链表实现,在这里博主由链表进行了实现。相比于栈后进先出的特点,队列每次添加新值要放入尾结点,每次弹出值要从头结点取出,因此,要首先定义头结点和尾结点。队列的实现代码如下:package com.原创 2020-12-11 21:59:27 · 128 阅读 · 0 评论 -
算法与数据结构(二):线性表之栈
算法与数据结构(二):线性表之栈博主会对算法与数据结构会不断进行更新,敬请期待,如有什么建议,欢迎联系。线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。线性表分为:顺序表,链表,栈,队列。栈属于线性表的一种,具有先进后出,后进先出的特点,底层可以由数组或链表实现,在这里博主由链表进行了实现。栈的实现代码如下:package com.victor.linear;import java.util.Iterator;/** * @De原创 2020-12-11 21:52:22 · 107 阅读 · 0 评论 -
算法与数据结构(一):线性表之链表
算法与数据结构(一):线性表之链表博主会对算法与数据结构会不断进行更新,敬请期待,如有什么建议,欢迎联系。线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。线性表分为:顺序表,链表,栈,队列。由于顺序表底层由数组实现,实现原理比较简单,所以就不对顺序表进行了实现,直接对链表进行实现。博主只对单向链表进行了实现,双向链表和单向链表大致相同,即把Node节点类定义两个指针,一个指向前Node,一个指向后Node。单向链表的实现代码如下:packag原创 2020-12-11 21:41:04 · 87 阅读 · 0 评论