![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法数据结构
文章平均质量分 93
张凯1
Java代码搬运工,DevOps工作者,喜欢研究一些原理性的东西,长期研究解决各种bug
展开
-
AVL树原理详解与实现(附代码)
上一篇文章讲了二叉搜索树,但是它会在极端情况下退化为链表,造成查找时间复杂度退化为O(N)O(N)O(N),那么怎样才能让它不退化为链表呢?这篇文章告诉你,快来看看把!文章目录1. 平衡二叉树的定义2. AVL树的调整3. AVL树的实现4. 完整代码,带测试程序1. 平衡二叉树的定义平衡说的是树的高度平衡,平衡二叉树可以这么定义:一颗空树如果不是空树,那么它的左子树和右子树都是平衡二叉树,且左右子树的高度差绝对值不超过1树的高度怎么定义?如果是空树,高度为0如果不是空树,那高度就.原创 2021-08-15 22:58:11 · 12077 阅读 · 5 评论 -
二叉搜索树详解(附代码)
今天讲一下二叉搜索树文章目录1. 定义2. BST数据结构的实现2.1. 定义树结点1. 定义这里我们引用百度百科的解释:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数.原创 2021-08-10 14:12:27 · 12769 阅读 · 2 评论 -
Java位运算的一些骚操作,你知道几个?
今天来总结一下Java中的位运算,并介绍几个位运算的骚操作,有多骚?请坐稳扶好,下面发车????文章目录1. 位运算基本介绍1.1. 位运算适用的数据类型1.2. 位运算介绍1.3. 对异或的理解1. 位运算基本介绍1.1. 位运算适用的数据类型在Java中,位运算适用于基础数据类型中的整数类型,即byte,short,char,int,long ,引用类型,布尔类型,浮点类型不可以使用。byte,short,char类型在使用位运算的时候会被转换为int类型(符号位扩展),其结果也是int类原创 2021-08-08 14:20:54 · 11751 阅读 · 4 评论 -
判断单链表是否有环,如何寻找环的入口结点
今天我们来讨论一个有趣的链表问题,判断链表是否有环,如果有环,环的入口结点如何寻找?文章目录1. 如何判断一个单链表是否有环呢?1. 如何判断一个单链表是否有环呢?原创 2021-07-31 01:25:49 · 12316 阅读 · 4 评论 -
排序算法全面总结,复杂度分析,太肝了
本篇文章总结一下各种常见的排序算法,并对各种算法的原理、复杂度、稳定性等性质进行分析;最后我们看一下这些算法在实际生产中的应用,前方高能,请坐稳扶好。文章目录1. 选择排序1. 选择排序...原创 2021-07-03 21:51:14 · 11917 阅读 · 3 评论 -
KMP算法,讲的很清楚
KMP算法讲解KMP算法就是字符串的模式匹配算法,它解决了一个这样的问题:有一个模式字符串p,设其长度是lenp,以及另一个字符串str,设其长度lenstr,找出p在str中第一次出现的位置,显然lenstr>=lenp。这个问题乍一看不难呀,暴力解法,把str中所有长度为lenp的子串拿出来比对一下不就完事了: public static int firstIndexOf(char[] pattern,char[] str){ if(pattern==null||st原创 2021-02-21 22:11:19 · 18539 阅读 · 5 评论