数据结构与算法
文章平均质量分 96
Java语言描述数据结构与算法
王逍遥大人
一个好人
展开
-
最优二叉树(哈夫曼树)Java实现
此篇博客讲最优二叉树也叫哈夫曼树的原理,以及构建步骤,还有哈夫曼编码原理。建议有二叉树基础朋友学习交流。对二叉树基础可以看我的另外一篇博客二叉树的构建以及遍历文章目录哈夫曼树引出:哈夫曼树原理及实现定义与原理哈夫曼树构造哈夫曼树Java代码实现哈夫曼树引出:我们平时期末成绩判断,不仅需要给出分数的具体值,还需要给出分数所处的段位,例如优秀、良好、及格、不及格;我们计算机怎样进行判断呢?上面的判断从最终结果来看并没有什么问题,但是我要要考虑效率,当我们每次拿到成绩时候都要从是否及格开始一连串的判断,原创 2020-12-24 03:00:07 · 1281 阅读 · 2 评论 -
数据结构-树
文章目录树基础知识树基础定义树的存储结构树基础知识树基础定义树定义树使用有n个节点的一种数据结构。n=0时为空树,n>=0时树有且只有一个根节点(root节点);n>1时,其余节点可分为m个互不相交的有向集T1,T2…结点分类树的结点包含一个数据元素和若干指向子树的分支。结点拥有的子树数,称为结点的度。度为0的结点称为叶子结点或者终端结点,度不为0的结点称为分支结点。树的度是树内各结点的最大值。结点间关系结点子树根称为结点的孩子;相应该节点是孩子的双亲,原创 2020-12-23 16:30:55 · 255 阅读 · 0 评论 -
二叉树的构建以及遍历(Java语言描述)
二叉树遍历原创 2020-12-23 03:12:56 · 707 阅读 · 0 评论 -
结点和节点的区别
节点和结点的区别是:1、节点是一个实体,它具有处理的能力;2、结点是一个交叉点、一个标记,算法中的点一般都称为结点,数据集合中的每一个数据元素都用中间标有元素值的方框来表示,我们称它为结点。节点和结点的区别有:节点是一个实体具有处理的能力;而结点是一个交叉点,是一个标记,一般算法中的点都称为结点。节点被认为是一个实体,有处理能力,比如网络上的一台计算机;而结点则只是一个交叉点,像“结绳记事”,打个结,做个标记,仅此而已,还有就是,要记住:一般算法中点的都是结点。我们在数据结构的图形表示中,对于.原创 2020-12-22 12:43:52 · 17132 阅读 · 0 评论 -
二分查找(递归+非递归)
文章目录二分查找递归实现非递归实现附加问题:安全防溢出的两整数平均值算法相关一些题目二分查找二分查找是一种查询效率非常高的查找算法。又称折半查找。起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来辅助查询。本文就介绍两种方法优缺点优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。使用条件:查找序列是顺序结构,有序。递归实现//二分查找递归实现原创 2020-09-16 00:48:24 · 387 阅读 · 0 评论 -
快速排序(java实现)
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来...转载 2020-08-05 20:50:44 · 113 阅读 · 1 评论 -
数据结构-链表(Java语言实现)、JDK中LinkedList源码剖析
我们刚接触数据结构最基础的数据结构那就是数组,但是数组在创建时大小就要被固定,数组的存储地址要是连续的等等不好的地方,当然数组也有他的好处,查询速度快等等我们这篇博客以数组和链表的不同开始讲解链表,最后再来剖析一下JDK中实现的链表LinkedList的源码,通过学习源码进一步提升。有兴趣朋友可以看看我的数组的博客。文章目录数组和链表链表的实现单链表单向循环链表双向链表逆置链表判断链表是否有环LinkedList源码剖析数组和链表数组有‘1好2不好’好是,数组的内存是绝对连续的,因此数组的随原创 2020-07-27 23:57:29 · 409 阅读 · 0 评论 -
Java中的数组、ArrayList源码剖析
数组数组基础概念同一种类型数据的集合。其实数组就是一个容器。数组的好处可以自动给数组中的元素从0开始编号,方便操作这些元素。格式元素类型[] 数组名 = new 元素类型[元素个数或数组长度];示例:int[] arr = new int[5];元素类型[] 数组名 = new 元素类型[]{元素,元素,……};int[] arr = new int[]{3,5,1,7};int[] arr = {3,5,1,7};注意给数组分配空间时,必须指定数组能够存储的元素个数原创 2020-07-19 11:10:59 · 326 阅读 · 0 评论 -
链表 带/不带头节点实现 java
带头节点/** * 带头节点的单链表的实现 * @param <T> */class Link<T extends Comparable<T>>{ /** * 指向单链表的头节点,其地址域中记录了链表第一个节点的地址 */ HeadEntry<T> head; /** * 初始化链表...原创 2019-09-25 19:26:14 · 205 阅读 · 0 评论 -
栈 队列 的链式和顺序实现 Java实现
栈顺序栈/** * 顺序栈实现 * @param <T> */class SeqStack<T>{ // 存储栈的元素的数组 private T[] stack; // top表示栈顶的位置 private int top; public SeqStack(){ this(10); } ...原创 2019-06-18 16:11:21 · 195 阅读 · 0 评论