
Java
spcoder
努力成为一名合格的程序猿
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java BufferWriter写文件写不进去或缺失数据
Java BufferWriter写文件之后文件是空的或者数据不全在编程的过程中,读写文件是非常常见的操作,在这里我问介绍一下最近我遇到的集中写文件写不进去的情况。首先给出完整的代码。import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;public class Main { public static void main(String[] args) throws IOExcept原创 2021-04-03 09:46:04 · 5404 阅读 · 1 评论 -
LeetCode 374 猜数字大小(关于二分法在解决问题过程中存在的问题)
现在已经有很多博客已经对LeetCode374的解决思路与方法做了详细的讲解,我在这里只简单的说一下,我在做这个题目时遇到的问题!解决办法的原理就是使用二分法来找到给定的那个数字,每次都是缩减一半的空间中搜索!在计算中间值的时候,mid会有两个计算公式:mid = (low + high) / 2;mid = low + (high - low) / 2;这两个公式的区别就是:当寻找的...原创 2020-01-13 12:33:29 · 737 阅读 · 1 评论 -
Java Boolean 初始化方式
Java Boolean 初始化方式1、Boolean(String boolString); 以字符串的方式初始化,只有当字符串是“true”(不区分大小写,也可以是tRue之类的)的时候是true;其他的字符串来完成初始化都是false。Boolean dpBoolean = new Boolean("ok");System.out.println(dpBoolean);结果:fals...原创 2020-01-10 16:28:17 · 9091 阅读 · 4 评论 -
B-树完整项目代码 Java版实现
B-树完整项目代码 Java版实现B-树结点定义public class BTreeNode { public int keyNum; // 结点中关键字的个数 public int[] data; // 存储关键字的数组 public BTreeNode parent; // 双亲结点 public BTreeNode[] childNodes; //指向孩子结点 s...原创 2019-10-14 19:49:15 · 843 阅读 · 0 评论 -
Java 代码 实现B-树
Java代码实现B-树B-树的定义在前面已经介绍过了,在这里就跳过这一部分,直接看代码的实现!在学习B-树的过程中,基本的理论都已经了解了!用人的大脑来插入,寻找,删除是很简单的,一目了然,但是真正实现起来却一点也不简单!为了实现这个数据结构,我百度搜索了一下,但是大多数都是介绍理论,很少有人真正用Java代码实现的,在这里我按照自己的思路实现了一下,大家觉得有神问题的,欢迎留言评论!!B...原创 2019-10-14 19:36:01 · 851 阅读 · 0 评论 -
含有n个关键码的m阶B-树最坏情况下深度是多少
B-树的定义:一颗m阶的B树,或者为空,或者是满足下列特性的m叉树:若根节点不为空,那么根结点最少有两棵子树;树中每个结点最多含有m棵子树;所有非叶子结点至少含有m/2取上整棵子树;每个非叶子结点含有如下信息:n,A0,K1,A1…Kn,An,其中Ki<=Ki+1n为结点的关键字个数,且有关键字个数=子树个数-1.K1的值大于A0所指向的结点的所有值,小于A1所指向的结点的所有...原创 2019-10-10 21:51:24 · 2923 阅读 · 0 评论 -
Java 代码实现平衡二叉树(插入、删除、查找、遍历操作)
Java 代码实现平衡二叉树最近一直在看数据结构的相关内容,对于平衡二叉树这一节,理论看起很简单,无非是判断结点的平衡因子是否绝对值小于2。在插入或者删除之后进行相应的旋转调整。我已开始试着按照书上所讲的内容进行编程,但是书上的代码皆是伪代码,只是告诉你一个思路,按照书上是实现不出来的,所以我决定在已有理论的情况下,试着按照自己的想法编程。因为在前面的博客中,我已经介绍过了一般的二叉树的插入...原创 2019-10-10 21:16:18 · 992 阅读 · 1 评论 -
Java 代码实现并查集
Java 代码实现并查集并查集表示:用树的形式表示,采用双亲表示法。根结点的双亲节点设置为-1.那么整个集合就可以用一个数组表示,数组中的元素可以设置为数组的下标。1、并查集结点类/* * 并查集结点的实现 */public class UFSetNode { int parent; // 当前结点的双亲节点,初始化为-1 int number; // 以当前结点为根的子树的结...原创 2019-10-08 10:57:20 · 287 阅读 · 0 评论 -
回溯法 集合A的r组合
集合A的r组合问题问题说明:从集合中的所有元素中取出r个元素所组成的集合。例如A={2,4,7}, r=2,那么就有:{2,4}、{2,7}、{4,7}1、基本思路:将该问题看作是r行n列的棋盘布局问题。约束条件是:第i行的元素所在的列要大于前i-1行元素所在的列,即x[i]>x[k],k=1,2,…i-1。2、Java代码实现public class SetAofR { int...原创 2019-10-07 16:27:00 · 347 阅读 · 0 评论 -
回溯法 集合A的全排列
回溯法 集合A的全排列1、基本思路:将问题看作是n行n列的棋盘布局问题,这里的约束条件是:在任何时刻不能有两个元素位于同一行或者同一列。2、Java 代码实现public class FullPermutation { int n; int ct; int[] x; // 构造函数 public FullPermutation (int n) { this.n = n; ...原创 2019-10-07 16:19:22 · 348 阅读 · 0 评论 -
求解集合A的所有子集,使用回溯方法解决
假设集合A={a1,a2,…an}有n个元素。1、基本思路:求解的基本思路与前面介绍的皇后问题的思路基本相同。在这里只需将问题看作是n行2列的棋盘布局问题。第i行的第1列表示子集中包含元素ai,第2列表示不包含元素ai。在这里没有什么约束条件,只需要往前寻找合适的解,然后回溯一步,再向前进找下一个解,直到找到所有的解。2、Java代码实现public class Subset { int...原创 2019-10-07 16:09:15 · 841 阅读 · 0 评论 -
回溯法解决8皇后问题
1、皇后问题解决思路:使用回溯法解决,也就是通常所说的利用树的深度优先搜索求解。即沿着一条路径往下走,如果走不通,那就往回走,尝试另一条路径。皇后问题的求解过程中,每一个树结点都可以看做是棋局的局部布局或者是完整布局。根结点表示棋局的原始状态,没有任何棋子。之后的层与层之间表示一种状态转换,状态转换的过程就是构造树的过程,也就是树的深度优先搜索的过程。在状态转换的任何时刻,都需要满足约束条件:任...原创 2019-10-07 15:56:41 · 846 阅读 · 0 评论 -
哈夫曼树实现:统计文本信息,构造哈夫曼树,并对其进行编码与解码
哈夫曼树的大部分内容都在上一篇博客中讲解了,在这里重点说一下如何统计的文本数据。基本思想:首先从文件中读取数据,按行读取,保存在String类型的遍历中。在统计信息的时候,使用的数据结构是HashMap,字符作为key,个数作为value。为了能与我之前写的程序相结合,需要将HashMap的数据转换成Huffman结点类型数据。然后按照之前的程序就可以操作了!读取文本:在public S...原创 2019-10-06 22:24:45 · 3036 阅读 · 0 评论 -
简单实现哈夫曼树的建立、编码与解码
哈夫曼树建立、编码、解码1、哈夫曼树的建立Huffman树是根据元素的权重建立的,权重较小的离根结点较远,而权重较大的离根结点较近,从而使得整个Huffman树有着最小的带权路径长度。Huffman树的具体特性请参考《数据结构》一书或者是其他博客。首先给出Huffman树的结点类:public class HuffmanNode { int weight; char c; Huffm...原创 2019-10-06 22:03:59 · 6127 阅读 · 2 评论 -
找到数组中两个最小的元素
找到数组中两个最小的元素基本思路:设置两个min1、min2变量,分别存储第一个最小的数据,第二个的数据。先将其初始化为一个相当大的值,然后依次与数组中的每一个元素比较,只有当比min1大的时候才会去比较min2,如此比较下来便可以得到数组中两个最小的元素。如果初始化的时候只是设置为第一个元素的值,在特殊情况下,第一个元素就是当前数组中的最小值,那么得到的便是min1=min2=(数组的最小值...原创 2019-10-06 08:43:45 · 3145 阅读 · 0 评论 -
二叉树操作:增、删、查、(非递归)遍历
二叉树基本操作树结点public class MyTreeNode { public int data; public MyTreeNode left; public MyTreeNode right; // 构造函数 public MyTreeNode () { left = null; right = null; } public MyTreeNode (in...原创 2019-10-03 11:47:48 · 205 阅读 · 1 评论 -
桶排序、计数排序、基数排序浅谈
今天我们来讨论一下三种排序方法:桶排序、计数排序、基数排序。因为计数排序、基数排序都可以看作是桶排序的变形,所以在这里先给出桶类:BucketNode解释说明:numbers表示桶中有多少个有效数据list用于存储桶中的数据有序插入是指在把数据放入桶的同时对数据进行排序,使之插入之后是有序的。无序插入就是一般的情况,依次插入即可。public class BucketNode { ...原创 2019-10-01 10:12:16 · 208 阅读 · 0 评论