![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 52
脚踏实地,仰望星空
加油,坚持努力。
展开
-
红黑树
一:红黑树的应用场景红黑树(Red-Black Tree,以下简称RBTree)的实际应用非常广泛,比如Linux内核中的完全公平调度器、高精度计时器、ext3文件系统等等,各种语言的函数库如Java的TreeMap和TreeSet,C++ STL的map、multimap、multiset等。RBTree也是函数式语言中最常用的持久数据结构之一,在计算几何中也有重要作用。值得一提的是,Java 8中HashMap的实现也因为用RBTree取代链表,性能有所提升。二:RBTree的定义RBT原创 2021-05-05 17:43:59 · 2064 阅读 · 0 评论 -
布隆过滤器的原理和实现
一:布隆过滤器的原理和实现原创 2021-05-04 23:59:05 · 342 阅读 · 0 评论 -
马踏棋盘算法
一:马踏棋盘算法原创 2021-04-04 21:27:19 · 562 阅读 · 1 评论 -
弗洛伊德算法
一:弗洛伊德算法原创 2021-04-02 22:28:17 · 8278 阅读 · 0 评论 -
迪杰斯特拉算法
一:迪杰斯特拉算法原创 2021-04-02 22:27:47 · 1464 阅读 · 0 评论 -
克鲁斯卡尔算法
一:克鲁斯卡尔算法介绍1) 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。 2) 基本思想:按照权值从小到大的顺序选择 n-1 条边,并保证这 n-1 条边不构成回路 3) 具体做法:首先构造一个只含 n 个顶点的森林,然后依权值从小到大从连通网中选择边加入到森林中,并使森林中不产生回路,直至森林变成一棵树为止克鲁斯卡尔算法图解说明 以城市公交站问题来图解说明 克鲁斯卡尔算法的原理和步骤: 在含有 n 个顶点的连通图中选择 n-1 条边,构成一棵..原创 2021-03-31 00:01:09 · 2463 阅读 · 0 评论 -
普里姆算法
一:普里姆算法package com.github.prim;/** * @author lizhangyu * @version 1.0 * @description * @date 2021/3/30 17:03 */public class MGraph { /** * 表示图的节点个数 */ int verxs; /** * 存放节点数据 */ char[] data; /** *原创 2021-03-30 17:44:45 · 662 阅读 · 0 评论 -
KMP算法
一:KMP算法原创 2021-03-26 00:02:14 · 115 阅读 · 0 评论 -
贪心算法
一:贪心算法原创 2021-03-26 00:01:38 · 124 阅读 · 0 评论 -
动态规划算法
一:动态规划原创 2021-03-26 00:01:06 · 254 阅读 · 0 评论 -
图
一:图的特点原创 2021-03-12 20:43:55 · 69 阅读 · 0 评论 -
平衡二叉树
一:平衡二叉树的特点原创 2021-03-12 20:42:06 · 1357 阅读 · 0 评论 -
二叉排序树
二:二叉排序树的特点原创 2021-03-12 20:40:27 · 531 阅读 · 0 评论 -
赫夫曼树
一:赫夫曼树的特点原创 2021-03-12 20:39:50 · 234 阅读 · 0 评论 -
堆排序
一:堆排序原创 2021-03-11 23:21:21 · 1460 阅读 · 1 评论 -
顺序储存二叉树
一:顺序储存二叉树的特点顺序二叉树通常只考虑完全二叉树第 n 个元素的左子节点为 2 * n + 1 第 n 个元素的右子节点为 2 * n + 2 第 n 个元素的父节点为 (n-1) / 2 n : 表示二叉树中的第几个元素(按 0 开始编号如图所示)完全二叉树的顺序存储,仅需从根节点开始,按照层次依次将树中节点存储到数组即可。从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组要求: 右图的二叉树的结点,要求以数组的方式来存放原创 2021-03-11 22:51:38 · 142 阅读 · 1 评论 -
二叉树
一:二叉树的特点原创 2021-03-11 00:44:29 · 438 阅读 · 0 评论 -
递归-八皇后问题(回溯算法)
一:八皇后问题八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法(92)算法思路:第一个皇后先放第一行第一列 第二个皇后放在第二行第一列、然后判断是否 OK, 如果不 OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适 继续第三个皇后,还是第一列、第二列……直到第 8 个皇后也能放原创 2021-03-11 00:13:48 · 256 阅读 · 0 评论 -
递归
一:递归的特点递归就是方法自己调用自己,每次调用的时候传入不同的变量,递归有助于解决复杂的问题,同时可以让代码变的更加简介。原创 2021-03-09 20:34:04 · 63 阅读 · 0 评论 -
栈
一:栈的特点栈是一种先进后出的数据结构。栈的入栈出栈演示入栈出栈二:栈的应用场景子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中。 处理递归调用:和子程序的调用类似,只是除了储存下一个指令的地址外,也将参数、区域变量等数据存入堆栈中。 表达式的转换[中缀表达式转后缀表达式]与求值(实际解决)。 二叉树的遍历。 图形的深度优先(depth 一 first)搜索法。三:栈的实现方式栈可以用链表和数组原创 2021-03-09 20:26:45 · 61 阅读 · 0 评论 -
数组模拟环形队列
一:数组模拟环形队列解决思路,为了解决循环的问题,我们可以通过取模的方式来解决,同时空出数组的最后一个位置来作为rear再向下一步就到走到first的表示,如数组的大小为3,则实际队列可以存储的数据大小为2.尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在做判断队列满的时候需要注意 (rear + 1) % maxSize == front 满] rear == front [空] 分析示意图: 二:代码实现ArrayCircleQueue实体类pac.原创 2021-03-08 21:56:00 · 97 阅读 · 1 评论 -
数组模拟队列
一:数组形成队列队列的特点是先进先出,如在银行排队办业务,食堂打饭都是先来先打。数组实现队列,根据这个,我们需要front和rear属性来记录队列前后端的下标。1:顺序队列原创 2021-03-08 00:15:35 · 89 阅读 · 0 评论 -
单向环形链表
一:单向环形链表的结构单向环形链表中的节点包含数据域和next指针域,而且最后一个节点的next指针域指向头节点。二:单向环形链表的使用场景约瑟夫问题的解决Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。解决思路:用一个不带头结点的循环链表来处理 Josep原创 2021-03-06 23:19:26 · 171 阅读 · 1 评论 -
双向链表
一:双向链表双向链表的节点包含数据域,前置指针域和后置指针域双向链表的增删查改代码实现:DoubleHeroNode实体类package com.doublelinklist;/** * @author lizhangyu * @date 2021/3/6 16:28 */public class DoubleHeroNode { public int no; public String name; public DoubleHeroNode原创 2021-03-06 18:49:07 · 76 阅读 · 0 评论 -
单向链表
一:链表链表分为单向链表,双向链表,环形链表1:单向链表单向链表中的节点包含数据域和next指针域。单向链表的增删查改代码实现HeroNode实体类package com.linklist;/** * @author lizhangyu * @date 2021/3/6 16:28 */public class HeroNode { public int no; public String name; public HeroNode nex原创 2021-03-06 17:27:03 · 133 阅读 · 1 评论 -
Hash算法的设计原理与代码实现
一:Hash算法的设计原理1:构建hash函数的原则是:函数本身便于计算 计算出来的地址分布均匀,即对任一关键字K,H(K)对应不同地址的概率相等,目的是尽可能减少冲突。2:构建Hash函数常用的方法除留余数法假如哈希表的长为m,p为小于等于m的最大素数,则哈希函数为H(K)=K%p,其中%为模P取余运算伪随机数法采用一个伪随机函数作哈希函数,即H(key)=random(key)二:处理Hash冲突的方法再哈希法这种方法是同时构造多个不同的哈希函数: ...原创 2021-03-06 14:41:05 · 2141 阅读 · 2 评论 -
LRU算法
什么是LRU算法?LRU是什么?按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常著名的计算机操作系统基础理论得来的:最近使用的页面数据会在未来一段时期内仍然被使用,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。基于这个思想,会存在一种缓存淘汰机制,每次从内存中找到最久未使用的数据然后置换出来,从而存入新的数据!它的主要衡量指标是使用的时间,附加指标是使用的次数。在计算机中大量使用了这个机制,它的合理性在于优先筛选热点数据,所谓热点数据原创 2020-06-15 23:56:58 · 844 阅读 · 0 评论