![](https://img-blog.csdnimg.cn/4cd475a166a94018ab25b9eae49a6057.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法与数据结构-java
文章平均质量分 68
算法与数据结构-java
zzu菜
努力努力在努力!
展开
-
KMP算法-字符串匹配(浅显易懂)
KMP的经典思想就是:当出现字符串不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配。本篇将以如下顺序来讲解KMP,什么是KMPKMP有什么用什么是前缀表为什么一定要用前缀表如何计算前缀表前缀表与next数组使用next数组来匹配时间复杂度分析构造next数组使用next数组来做匹配前缀表统一减一 C++代码实现前缀表(不减一)C++实现总结本篇内容参考和总结了代码随想录:https://programmercarl.com/0028.%E5%原创 2022-03-24 21:24:21 · 6108 阅读 · 3 评论 -
哈希表基础知识
哈希表基础知识首先什么是 哈希表,哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hash table就可以了)。哈希表是根据关键码的值而直接进行访问的数据结构。这么这官方的解释可能有点懵,其实直白来讲其实数组就是一张哈希表。哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,如下图所示:那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里。例如要查询一个名字是否在这所学校里。要枚举的话时间复原创 2022-03-13 19:18:56 · 14111 阅读 · 0 评论 -
链表基础知识
链表基础知识关于链表,你该了解这些!什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链接的入口节点称为链表的头结点也就是head。如图所示: 链表的类型接下来说一下链表的几种类型:单链表刚刚说的就是单链表。双链表单链表中的节点只能指向节点的下一个节点。双链表:每一个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。双链表 既可以向前查询也可以向原创 2022-03-08 10:36:48 · 675 阅读 · 0 评论 -
数组基本知识
数组基础知识原创 2022-03-04 17:31:20 · 9341 阅读 · 0 评论 -
回溯法介绍及使用
回溯法回溯算法与深度优先遍历以下是维基百科中「回溯算法」和「深度优先遍历」的定义。回溯法 采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:找到一个可能存在的正确的答案;在尝试了所有可能的分步方法后宣告该问题没有答案。深度优先搜索 算法(英语:Depth-原创 2022-02-25 15:13:50 · 1106 阅读 · 0 评论 -
哈夫曼编码简单实现
哈夫曼编码基本介绍赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式, 属于一种程序算法赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一。赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%~90%之间赫夫曼码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,称之为最佳编码i like like like java do you like a java // 共40个字符(包括空格) 105 32原创 2022-02-23 15:34:53 · 768 阅读 · 0 评论 -
哈夫曼树及实现
霍夫曼树java实现原创 2022-02-23 15:27:57 · 276 阅读 · 0 评论 -
堆排序概念及实现
堆排序-java实现原创 2022-01-18 15:50:00 · 110 阅读 · 0 评论 -
线索化二叉树
线索化二叉树java实现原创 2022-01-17 15:45:49 · 142 阅读 · 0 评论 -
顺序存储二叉树
顺序存储二叉树基本说明从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看右面的示意图特点顺序二叉树通常只考虑**完全二叉树 **第 n 个元素的左子节点为 **2 * n + 1 **第 n 个元素的右子节点为 **2 * n + 2 **第 n 个元素的父节点为 (n-1) / 2n : 表示二叉树中的第几个元素(按 0 开始编号如图所示)要求:右图的二叉树的结点,要求以数组的方式来存放 arr : [1原创 2022-01-13 16:23:13 · 371 阅读 · 0 评论 -
二叉树及其相关操作
二叉树二叉树的概念树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树。二叉树的子节点分为左节点和右节点。满二叉树如果该二叉树的所有叶子节点都在最后一层,并且结点总数= 2^n -1 , n 为层数,则我们称为满二叉树完全二叉树如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续,我们称为完全二叉树。二叉树遍历这里的二叉树的构建,我们手动构建二叉树。创建树节点类TreeNode.java/** * @au原创 2022-01-09 17:49:49 · 107 阅读 · 0 评论 -
树存储及其相关概念
树树对比数组和链表数组存储方式的分析:优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者下标方式访问元素,速度快,效率较低链式存储方式的分析:优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可, 删除效率也很好)缺点:在进行检索具体某个值,比如(检索某个值,需要从头节点开始遍历)树存储方式的分析:能提高数据存储,读取的效率, 比如利用 二叉排序树(Binary Sort原创 2022-01-09 17:46:55 · 302 阅读 · 0 评论 -
哈希表概念及实现
哈希表看一个实际需求,google公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的 所有信息.要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列)散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。自己创建原创 2022-01-07 12:18:25 · 403 阅读 · 0 评论 -
二分查找和插值查找
查找原创 2021-12-13 17:01:19 · 288 阅读 · 0 评论 -
常见7种排序算法及java实现
排序算法原创 2021-12-10 15:48:38 · 561 阅读 · 0 评论 -
递归及迷宫问题和八皇后问题 -java实现
递归原创 2021-12-10 15:44:24 · 90 阅读 · 0 评论 -
堆栈及应用 -java实现
堆栈实现-java原创 2021-12-10 15:42:52 · 110 阅读 · 0 评论 -
链表及常见面试题
链表,面试题原创 2021-12-02 10:10:11 · 522 阅读 · 0 评论 -
队列-java
队列原创 2021-12-02 10:08:14 · 536 阅读 · 0 评论 -
稀疏矩阵-java
稀疏矩阵原创 2021-12-01 20:02:09 · 185 阅读 · 0 评论 -
算法的时间复杂度
时间复杂度算法与数据结构java原创 2021-12-01 19:18:55 · 3392 阅读 · 0 评论