
数据结构与算法
不懂才觉得高深
爱生活,爱学习,爱工作
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
平衡二叉树的简单实现
定义: 平衡二叉搜索树,又被称为AVL树(Self-balancing binary search tree),且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 图解参考 其实就是基于BST树,区别就是添加节点和删除节点的时候判断树是否平衡,不平衡的时候,通过旋转的方式来让树平衡 /** * AVL树的节点 */ public cla...原创 2020-01-04 18:21:30 · 247 阅读 · 0 评论 -
二叉排序树(BST)
参考文章 定义 一棵空树,或者是具有下列性质的二叉树: 1 若左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2) 若右子树不空,则右子树上所有结点的值均大于它的根结点的值; 3) 左、右子树也分别为二叉排序树; 4) 没有键值相等的结点。 代码实现如下,参考文章的图解和思路都超赞 /** * 二叉排序树节点 */ public class BSTreeNode { /**...原创 2020-01-02 18:34:12 · 165 阅读 · 0 评论 -
单链表的应用--约瑟夫问题
问题描述: Josephu(约瑟夫、约瑟夫环) 问题 Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数 到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由 此产生一个出队编号的序列。 提示:用一个不带头结点的循环链表来处理 Josephu 问题:先...原创 2019-12-30 09:33:14 · 265 阅读 · 0 评论 -
栈的简单实现
栈的描述: 线性结构,有序列表,先进后出 数组实现栈: 思路:记录一下栈顶元素的索引,加入新元素时索引++,索引位置对应的值设为新元素,直到栈满,取出元素后,索引–,直到小于0,栈空; /** * 链表实现栈 */ public class ArrayStack { /** * 栈顶 */ private int top = -1; /** ...原创 2019-12-28 18:19:50 · 165 阅读 · 0 评论 -
递归
递归就是方法不断的调用方法本身,每次调用时,传入不同的变量 递归每调用一次方法本身,就将方法压入栈中,执行完栈顶的方法后,将结果返回,方法依次出栈,最后全部出栈.递归调用完毕 样列一 阶乘的运算 问题描述: 大于等于0 0的阶乘: 0!=1; 1的阶乘: 1!=1; 任何大于等于1 的自然数n 阶乘表示方法: n!=1 x 2 x 3 x … x(n-1) x n ; /** * 阶乘运算 *...原创 2019-12-28 18:04:44 · 164 阅读 · 0 评论 -
常用排序算法
参考文章 排序算法: 排序也称排序算法,排序是将一组数据,依指定的顺序进行排列的过程 排序的分类 1,内部排序 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序 2,外部排序 数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序 常见的排序算法: 一.插入排序: 1.直接插入排序 /** * 直接插入排序 * <p> * 算法描述 * 从第一个元...原创 2019-12-28 18:09:21 · 189 阅读 · 0 评论 -
常用查找算法
在 java 中,我们常用的查找有四种: 顺序(线性)查找 /** * 线性查找 * 最简单的查找 * 其实就是遍历整个数组,一个个的去进行值的比对,找到就返回结果 */ public class SeqSearch { /** * 从数组中查找key的索引 * * @param arr * @param key * @re...原创 2019-12-28 18:06:24 · 164 阅读 · 0 评论 -
二叉树
定义 二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。 如图: 二叉树特点 每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。 左子树和右子树是有顺序的,次序不能任意颠倒。 即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。 二叉树实现遍历,查找,删除功能 /** * 数...原创 2019-12-28 18:03:34 · 275 阅读 · 0 评论