![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 68
兴涛
春风化雨,森林拔地而起!
展开
-
单调栈及其对应算法题
单调栈的应用:求解下一个大于x元素或者是小于x元素的位置。在这个过程中,维护的是一个单调栈。算法题目:稍加分析一下就会发现,和上面上说的差不多。做题技巧就是:1、始终要维护一个单调栈,具体看其是递增还是递减;2、分析判断条件,判断出栈和入栈;class Solution { public int[] dailyTemperatures(int[] temperatures) { //单调栈 详细版 int[] result = new int原创 2022-04-12 17:25:23 · 316 阅读 · 0 评论 -
B树和B+树
B树关键字:结点中的数值。在第四条中:p为指针,k为关键字。p0指向的数值要小于k1关键字,p1指向的数值要大于k1关键字,小于k2关键字,以此类推。在说明中,数据库应用中(B+树)可能在外部节点中存放一些内容。插入细节此时分裂,但是没有双亲(父)节点,所以只好新建一个双亲节点,树高度增加一层;再插入,要插入到叶子节点中此时有双亲节点,不需要增加树的高度此时双亲节点已经四个了,就需要再新建双亲节点,增加树的高度4、删除节点从左原创 2022-04-07 20:36:56 · 1869 阅读 · 0 评论 -
哈希表(散列函数)的构造方法和哈希冲突
哈希表(散列表)的构造方法和哈希冲突一、散列函数的构造方法1、直接定址法2、数字分析法3、平方取中法4、折叠法5、除留余数法6、随机数法二、解决哈希冲突的方法1、开放定址法2、再散列函数法3、链地址法4、公共溢出区法一、散列函数的构造方法1、直接定址法取关键字的某个线性函数的值作为地址:F(key) = A * key + B (A、B为常数) 比如我要存储某个社区年龄0-20岁的人,那么我们可以直接使用年龄的数值作为地址:F(key) = key (A=1、B=0) 采用这种原创 2022-01-16 13:38:15 · 388 阅读 · 0 评论 -
对于循环不变量原则的理解
循环不变量在《算法导论(第3版)》的2.1节中有讲述。循环不变量定义:在循环过程中保持不变的性质。循环不变量的主要作用:让算法设计的逻辑更加清晰让代码更加简洁,有更强的逻辑性证明算法的正确性比如:在选择排序算法中,我们可以写出循环不变的性质:区间nums[0…i)里保存了数组里最小的i个元素,并且nums中的元素按升序排列。无论是在循环的初始化、循环的过程中、循环的结束,这个循环不变性质都是恒定不变的。我们可以根据这个不变性质去设计算法、去让程序更有逻辑性等;对二分法进行代码实现时,原创 2022-01-06 11:14:41 · 3295 阅读 · 1 评论 -
插入排序算法汇总---附JAVA语言实现
插入排序算法汇总一、直接插入排序二、折半插入排序三、希尔排序在介绍算法之前,我先给大家介绍一个很好用的网站,里面的可视化过程可以帮助你更好的理解数据结构和算法VISUALGO.NET: https://visualgo.net/zh.可视化过程:以下内容以算法的思想、特征、实现三方面进行讲解一、直接插入排序基本思想:每次将一个待排序的记录按其关键字大小插入到前面已排好的子序列。类似于打牌的时候,手中扑克牌的排序。特征:适用于顺序存储表和链式存储表;应用于基本有序和数据量小的排序表;原创 2021-07-09 19:12:02 · 92 阅读 · 0 评论 -
BF简单匹配算法和KMP匹配算法
BF和KMP匹配算法一、BF匹配算法二、KMP匹配算法一、BF匹配算法BF模式匹配算法,又称朴素模式匹配算法,简单模式匹配算法,暴力匹配算法。对于字符串,现有一个主串和一个子串,那么子串在主串中的定位操作通常称为串的模式匹配。下面我们来了解一下BF匹配算法。假设有一主串S = “goodgoogle”,子串T = “google”,那么找到子串在主串中的位置,我们直接想到的方法就是如下:1、先将子串从主串的头部开始比较。其中直线符号为相等,闪电符号为不相等。2、遇到不相等的之后,将子串向右滑动原创 2021-05-27 12:05:58 · 1208 阅读 · 0 评论 -
浅谈 分而治之-欧几里得算法
浅谈 分而治之-欧几里得算法一、抛出问题二、欧几里得算法及证明一、算法二、证明此问题讨论来源于《算法图解》[美] Aditya Bhargava一、抛出问题假设你有一小块田地,面积是1680*640。你要将这块地均匀地分成方块,并且分出地方块要尽可能大,你该如何分?首先你可能想到,我直接对半分一下就好了,但是题中是需要分成的是方块;那你可能想到,我先按方块来分,然后对剩下不是方块的部分,我再分成方块。但是这就违背了均匀的题意。所以,应该如何来分呢?我们可以使用分而治之的思想来解决问题。首先找出一个原创 2021-03-07 18:57:03 · 2572 阅读 · 7 评论