随笔分类 - 数据结构
摘要:上节知识复习 粗略的分析了堆的几个应用场景 用代码实现了一个简易的大顶堆 粗略的分析了堆的几个应用场景 用代码实现了一个简易的大顶堆 堆构建及其应用场景-堆排序及其优化 堆排序及堆的构建 堆排序及堆的构建 上一小节我们已经实现了一个大顶堆的元素的插入和最大元素的弹出,有这两个方法,很容易对给定的一系
阅读全文
摘要:应用场景和前置知识复习 堆排序 堆排序 排序我们都很熟悉,如冒泡排序、选择排序、希尔排序、归并排序、快速排序等,其实堆也可以用来排序,严格来说这里所说的堆是一种数据结构,排序只是它的应用场景之一 Top N的求解 优先队列 Top N的求解 优先队列 堆得另一个重要的应用场景就是优先队列 我们知道普
阅读全文
摘要:前置知识 调和平均数 调和平均数 通常我们求一堆数的平均数 就是把一堆数加起来除以这堆数的数量,如 x1, x2, x3, x4, .... ,xn的平均数 H = (x1 + x2 + x3 + x4 + xn) / n . 调和平均数(英文叫 Harmonic mean)的计算方法是: 或者 使
阅读全文
摘要:定义平衡树节点: 辅助的方法: 1.用于计算节点的高度: 2.获取节点的平衡因子(即左子树与右子树的高度差): AVL树插入数据的四种结构: 第一种: 只需要实现单次右旋: 第二种: 先左旋节点的左子节点,再右旋节点: 第三种: 只需要实现单次左旋: 第四种: 先右旋右子节点,再左旋: 出入数据的完
阅读全文
摘要:构成二叉查找树的条件 任意节点的所有左子节点的值小于当前节点的值,右子节点的值大于当前节点的值; 二叉查找树节点简单定义: 这里只定义值是一个int类型,其实有 java的Comparable,可以把这个值得类型定义为任意Comparable接口实现。 树的基本操作: 二叉树的三种遍历方式
阅读全文
摘要:最近赶脚到代码里面的if,else太多, switch case太多,而且每个if下面的逻辑还很多,就想到了策略模式解决,拿其中的一个场景来说: 叫开会了,稍后完善。。。。
阅读全文
摘要:自身复习,就不温习冒泡排序、插入排序了 快速排序: 来测试一下: 运行结果:
阅读全文
摘要:基本概念 Map 别名映射表,也叫关联数组,基本思想是它维护的键-值(对)关联,因此可以用键查找值,也有放入键值的操作,下面根据定义自己来实现一个Map,首先应该想到的是数组,因为大多数Java集合类底层都是基于数组和链表的,这里我给它命名叫做 MapVersion01 这里为了方便查看,重写了to
阅读全文
摘要:本人文笔较差,语文从来不及格,基础不好,写此类文章仅供自己学习,理解队列及其他知识,高手大神请略过。参考书籍 《数据结构与算法分析-Java语言描述》、《大话数据结构》1.1 循环链表简介todo:
阅读全文
摘要:本人文笔较差,语文从来不及格,基础不好,写此类文章仅供自己学习,理解队列及其他知识,高手大神请略过。参考书籍 《数据结构与算法分析-Java语言描述》、《大话数据结构》1.1 静态链表简介用数组描述的链表叫静态链表。官方是这么给的定义。另一种描述方法叫游标实现法。先不管这些无聊的定义。先按我个人理解...
阅读全文
摘要:本人文笔较差,语文从来不及格,基础不好,写此类文章仅供自己学习,理解队列及其他知识,高手大神请略过。参考书籍 《数据结构与算法分析-Java语言描述》1.1 单链表简介线性表的最大的缺点就是插入和删除操作需要移动大量的元素,这是它在内存中的连续存储结构造成的。为了弥补这2个缺点,就出现了链表,即线性...
阅读全文
摘要:本人文笔较差,语文从来不及格,基础不好,写此类文章仅供自己学习,理解队列及其他知识,高手大神请略过。参考书籍 《数据结构与算法分析-Java语言描述》1.1 线性表简介线性表是0个或多个元素的有限序列。即元素之间有顺序且有限。假设表中有元素A1,A2,A3,....,AN,若存在1 { //不...
阅读全文

浙公网安备 33010602011771号