自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (3)
  • 收藏
  • 关注

原创 二叉排序树(Java实现)

package cn.mrlij.binarysorttree;/** * 二叉排序树 */public class BinarySortTreeDemo { public static void main(String[] args) { BinarySortTree bst = new BinarySortTree(); int[] arr ...

2019-11-25 09:51:15 169

原创 数据压缩-赫夫曼编码字节数组

package cn.mrlij.tree.huffman;import java.util.*;import java.util.Map.Entry;/** * 实现生成哈夫曼树对应的哈夫曼编码 */public class HuffmanCode { public static void main(String[] args) { String str...

2019-11-14 09:32:44 222 1

原创 哈夫曼编码实现(Java实现)

package cn.mrlij.tree.huffman;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;/** * 实现...

2019-11-13 09:44:43 587

原创 数据压缩-创建哈夫曼树实现(Java实现)

package cn.mrlij.tree;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;public class Huff...

2019-11-12 21:54:42 141

原创 赫夫曼树的构建(Java实现)

package cn.mrlij.tree;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;/** * 赫夫曼树的创建 */public class HuffmanTree { public static void...

2019-11-11 10:03:21 99

原创 堆排序(Java实现)

package cn.mrlij.tree;import java.util.Arrays;public class HeapSort { public static void main(String[] args) { int arr[] = {4,6,8,5,9}; heapSort(arr); System.out.print...

2019-11-11 09:00:02 81

原创 线索化遍历二叉树(Java实现)

package cn.mrlij.tree.threadedbinarytree;public class ThreadedBinaryTree { public static void main(String[] args) { HeroNode root = new HeroNode(1,"tom"); HeroNode node2 = new...

2019-11-07 09:22:34 274 1

原创 线索化二叉树的实现(Java实现)

线索化二叉树的实现:将当前节点的前驱节点指向前一个节点,如果是第一个,则该前驱节点为空。将当前节点的后继节点指向为将要遍历的下一个节点。举例:按照中序遍历来说,该顺序应该为{8,3,10,1,14,6}。8号节点是第一个,将8号节点的前驱节点置为空,让他的左子树指向该前驱节点,右字数指向该后继节点3。这样可能存在重复的指向,因为8号,3已经指向了8号,现在8也指向3,所以,弄一个类型来区分...

2019-11-05 09:35:21 778 3

原创 顺序存储二叉树的代码实现(Java实现)

要求:给定一个有序数组,将该有序数组以树中前序遍历的方式打印输出。分析: 顺序二叉树通常只考虑完全二叉树 第n个左子节点为2*n+1 第n个右子节点为2*n+2 第n个元素的父节点为(n-1)/2 代码实现package cn.mrlij.tree;/** * 顺序存储二叉树的前序遍历 * 规律: * 顺序二叉树通常只考虑完...

2019-10-30 10:03:46 458

原创 二叉树的查找(Java实现)

本文实现二叉树的查找,有3种查找的方式,分别是前序,中序,后序遍历。package tree;/** * 二叉树的前中后序遍历 */public class BinaryTreeDemo { public static void main(String[] args) { BinaryTree bt = new BinaryTree(); H...

2019-10-29 10:02:32 1051

原创 二叉树的遍历(Java实现)

数组的优点在于查找快,根据索引就能直接查找到对应的值,但是要是进行增删改操作的话,必须复制原数组进行操作,所以就会出现效率问题。使用链表的优点在于增删改很快,但是查找的话,就必须从头开始遍历,也会影响效率。引入二叉树,增删改查的效率都很高。package tree;/** * 二叉树的前中后序遍历 */public class BinaryTreeDemo { ...

2019-10-28 10:18:49 111

原创 哈希表的实现(Java实现)

哈希表的结构是由数组+链表或者数组+二叉树组成,实现的思路是创建一个固定大小的链表数组,将各条链表交给数组来进行管理,根据自定义的规则,将数据依次插入链表中,这样查找起来会非常方便。package cn.mrlij.hash;import java.util.Scanner;public class HashTableDemo { public static void main(S...

2019-10-26 12:36:06 1719

原创 斐波那契查找算法(Java实现)

package cn.mrlij.search;import java.util.Arrays;public class FibonacciSearch { public static int maxSize = 20; public static void main(String[] args) { int arr[] = {2,3,6,8,9,20};...

2019-10-25 10:23:00 763 1

原创 插值查找(Java实现)

package cn.mrlij.search;import java.util.Arrays;/** * 插值计算:在二分查找的基础上,将原先的int mid = (left+right)/2 ==> * 改为int mid = left+(right-left)*((findVal-arr[left])/(arr[right]-arr[left])) * mid变为自适应...

2019-10-24 09:20:46 350

原创 二分查找(Java实现)

package cn.mrlij.search;/** * 二分查找:前提是一个有序序列。定义一个有序数组,将要查找的值与数组的中间值比较,如果比中间索引的值小, * 则向左递归,一直到查找到这个值为止。如果大于中间值,则向右递归。如果正好是中间的这个值的时候,就直接 * 返回该值的索引。 * 注意:1,如果查找的值不存在,就直接返回-1。 * 2,递归结束的条件:一是直...

2019-10-23 10:33:14 166

原创 线性查找(Java实现)

package cn.mrlij.search;/** * 线性查找:遍历数组,直接找出我们需要的查找的数据 */public class SeqSearch { public static void main(String[] args) { int arr[] = {2,5,24,6,78}; int index = seqSearch(ar...

2019-10-22 13:08:42 479

原创 基数排序(Java实现)

package cn.mrlij.sort;import java.lang.reflect.Array;import java.util.Arrays;/** * 基数排序 * 实现原理:首先定义10个桶,并给桶编号0-9,用于存放数组中待排序的数据。 * 1,第一轮的时候将分别计算出的数组中的各个数据的个位数,将个位数 * 对应的...

2019-10-22 10:40:28 445

原创 归并排序(Java实现)

package cn.mrlij.sort;import java.util.Arrays;public class MergeSort { public static void main(String[] args) { int arr[] = {4,6,75,35,267}; int temp[] = new int[arr.length];...

2019-10-21 15:04:43 111

原创 快速排序(Java实现)

实现原理:指定一个基数值,(正序)将大于该基数值的所有数放在基数值的右边,小于则放在该基数值的左边。一直往复这样,就能得到该数组的有序序列,使用的方法是递归实现代码:package cn.mrlij.sort;import java.util.Arrays;/** * 快速排序 * 原理:指定一个基数值,(正序)将大于该基数值的所有数放在基数值的右边,小于则放在该...

2019-10-14 16:14:04 108

原创 移动式希尔排序(Java实现)

上一篇介绍了交换式希尔排序,测试之后,发现速度非常慢,于是对希尔排序进行了改进,即移动希尔排序。实现代码package cn.mrlij.sort;import java.util.Arrays;/** * 交换式希尔排序 * 实现原理:将一个待排序的数组分成arr.length/2组,步长移动为arr.length/2,将一组内的数字比较的大小, * ...

2019-10-12 13:18:21 117

原创 交换式希尔排序(Java实现)

在之前的插入排序做了一下优化,当一个比较小的数比较靠后时,进行移动的次数必然要增多,所以使用希尔排序进行改进。实现原理:将一个待排序的数组分成arr.length/2组,步长移动为arr.length/2,将一组内的数字比较的大小,大的放在后面,小的放在前面。进行一轮排序之后,再继续将排序后的数组分为arr.length/2/2 组,步长为arr.length/2/2,从第一个数开始移动ar...

2019-10-10 11:25:28 176

原创 插入排序(Java实现)

实现原理:给定一个数组,将数组分为一个有序表和一个无序表。默认以第一个数为有序,将数组剩下的部分看做一个无序表,依次从无序表中选择数往有序表中插入,最终得到一个有序数组。需要注意的是,有的地方可能理解有点困难。定义待插入的数,待插入的索引值为该待插入数的索引值-1,就是说,每次插入的时候从他前面的一个数开始插入。两者进行比较,如果待插入的数小于他前一个数,那说明他要插入的位置不在此处。就将他前...

2019-10-09 22:17:50 74

原创 选择排序(Java实现)

思路分析选择排序的思路是,给一个待排序的数组,假定一个最小值。将该最小值与数组中剩下的值进行比较,如果大于数组中剩余的值就将它们两个的位置交换一下,一直循环这样下去,就能得到一个从小到大排序的一个数组。举个例子来说,给一个数组【6,2,5,1】,该数组是一个无序的,下面使用选择排序使它变成一个有序的数组。第一趟排序:首先定义6为最小的值,并记录它的索引值,为0.依次比较数组中剩...

2019-09-30 16:27:17 128

原创 冒牌排序及优化

通俗的讲,冒泡排序我的理解是,举个例子吧。..将未排序的数放在一个数组中,例如数组中的值是3,-1,10,4,9。要进行多趟排序,最终才能达到一个有序的数组。就是将数组的一个值与后面的一个值进行比较,如果前面的一个值比较大,则将较大的值一前面的一个值交换位置。如果前面的数小于或者等于后面的数,就不交换。一次往下进行,直到比较完数组中最后的一个值。一趟比较之后,会得到数组中最大的一个值。下一趟比...

2019-09-29 17:48:58 197

原创 八皇后问题(Java实现)

八皇后问题八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。分析代码实现package cn.mrlij.recursion;/** * 8皇后问题 */public class ...

2019-09-27 15:24:25 150

原创 面试题——排序链表的合并

题目:已知两个已排序链表头节点指针l1与l2,将这两个链表合并,合并后仍为有序的,返回合并后的头结点。举例:分析两个链表的情况可能有以下几种,一是其中一个链表为空,二是两个链表都为空,三是两个链表都不为空。如果是两个链表都为空的话,那直接就将返回。下面针对存在不空链表的情况做出分析。1,如果是其中一个链表为空的话,直接返回另一链表的头结点就行了。2,如果是两个链表都不为...

2019-09-27 08:58:39 161

原创 迷宫问题(Java实现)

如下是8*7的一个迷宫地图,现在要从左上角标红色数字0走到右下角数字0这个位置,实现自动查找路线。1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 1 1 ...

2019-09-26 15:40:58 2072 1

原创 面试题——整数逆向

题目:给定一个整数,请将整数的每一位进行逆向,溢出的整数返回0。例如:输入12345——输出54321 输入3450——输出543 输入3450——输出543分析类似于字符串的反转一样,可以借助栈来实现。但是这样会创建额外的空间,造成不必要的浪费。所以采用数学方法,来解决这道题。首先考虑的是,给定一个整数X,将X%10,得到的余数正好是...

2019-09-26 09:00:00 316

原创 中缀表达式转后缀表达式

之前一篇文章讲了逆波兰式计算器的实现,我们一般使用的是前缀表达式,但是对于计算机来说,后缀表达式是一种更好的选择。下面讲下中缀表达式转换为后缀表达式。分析中缀表达式之前说过,就比如1+((2+3)*4)-5这样的计算表达式,但是如何转换成后缀表达式呢?1,定义两个栈s1和s2,运算符栈和用于存储中间结果的栈s22,从左往右扫描中缀表达式3,遇到操作数,将其压入s2。4,遇...

2019-09-25 10:33:50 149 1

原创 逆波兰计算器(Java实现)

之前的一篇博客中,讲的是用栈实现了中缀表达式的简易计算器,对于我们人来讲,中缀表达式是一种比较直观,而且非常好计算的一种形式,但对于计算器来讲,非常的难去看懂。所以,下面我讲下逆波兰计算器的Java实现。逆波兰式(后缀表达式)逆波兰表达式又叫做后缀表达式。逆波兰表示法是波兰逻辑学家J・卢卡西维兹(J・ Lukasewicz)于1929年首先提出的一种表达式的表示方法 [1] 。后来,人...

2019-09-24 13:51:51 1163 3

原创 利用栈使用简易计算器(Java实现)

题目:使用栈计算类似表达式:5+2*3-2 的计算结果提示:简易计算器操作符号限于+,-,*,/的计算分析思路:1,创建一个数栈和一个符号栈,数栈用于存放数字,符号栈用于存放符号2,创建一个索引index,用于遍历表达式3,扫描表达式,如果是数字直接进入数栈,如果是符号,则需要进行判断。分两种情况,一是当符号栈如果为空,直接将符号入栈。二是不为空,先比较当前栈顶的符号...

2019-09-23 13:05:58 858 2

原创 利用数组实现栈(Java实现)

栈介绍栈是一个先入后出的有序列表。栈是限制线性表中元素的插入和删除只能在线性表中同一端进行的一种特殊的线性表,允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底。最先放入栈中的元素在栈底,最后放入的元素在栈顶。最先出栈的元素在栈顶,最后出栈的元素在栈底。分析使用数组来模拟栈的实现,首先考虑到数组的长度是固定的,所以使用栈就必须给一个特定的长度,...

2019-09-22 10:10:03 615

原创 环形单链表实现——约瑟夫问题

本文主要是借助环形链表解决约瑟夫环问题,约瑟夫问题是,设编号为1,2,...n的n个人围坐成一圈,约定编号为k(1<=k<=n) 的人从1开始报数,数到m的那个人就出列,依次类推,直到所有都出列为止,由此产生一个出队的序列。提示:用一个不带头结点的循环链表来处理该问题,先构成一个有n个节点的单循环链表,然后由k节点起从1开始计数,计到m是,对应节点从链表中删除,然后再从被删除...

2019-09-21 16:11:24 2613

原创 双链表的实现(Java实现)

双链表与单链表的区别是,单链表只能沿着一个方向去查找,双链表可以沿着正向和反向进行查找。如下图所示。单链表的实现可以看我前面的博客实现原理在原来单链表的属性中会添加一个pre(存放前一个节点的地址),原有属性不变。查找:和单链表的查找是完全一样的,只不过,通过反方向也可以进行查找修改:和单链表的修改是一样的。删除:删除有点特殊,单链表是将一个节点移除之后,将该节点...

2019-09-20 13:04:20 399

原创 单链表之和(Java实现)

题目:数据在机器中存储的方式,比如342,在链表中是逆向存储的,所以就变成了2->4->3这样了,同样5->6->4就是465,给出两个用链表表示的数字,求两数字之和。要求以链表的方式返回,上面的例子就返回7->0->8实现原理:首先写出单链表的结构,定义一个函数,传入两个链表。当两个链表的其中一个链表为空时,则将链表里面存放的数据用0表示,当两个链表...

2019-09-19 15:17:19 224

原创 Java实现找零钱

题目:给定一个目标值和一个整形数组,在数组中存在两个的和与目标值相同,找出数组中两个值的位置前提:数组中只存在一种组合情况等于目标值实现思路 遍历数组,并将数组和它所在的值放入map中,用目标值减去数组中遍历的值,如果 在map中存在的话,说明该数组对应的下标和放入map中的值正好加起来是给定的目标值。实现代码package cn.mrlij.function;i...

2019-09-19 12:46:54 1456

原创 面试题之逆序打印单链表(Java实现)

前提:在不改变原来单链表的结构的情况下,逆序打印单链表的内容。实现原理单链表中的一个节点保存的是数据和下一个节点的地址,现在要实现逆序打印单链表中的数据值,我们可以借助栈来实现逆序打印,将每一个节点压入栈中,利用栈先进后出的特点,最后一个进栈的节点将会最先出栈,正好符合我们所说的逆序打印。首先判断单链表是否存在有效节点,如果不存在则不能打印节点信息。再遍历单链表,将遍历出的每个节点放...

2019-09-18 16:21:23 622

原创 面试题之反转单链表(Java实现)

使用Java实现了单链表的反转,就不介绍单链表的结构了如下图所示,上面的链表是原链表,将上面的链表反转成下面的链表。反转的前提是头结点的下一个节点不为空和下下个节点不为空,为空则不用反转实现思路1,定义一个辅助变量temp,用于遍历原链表2,定义一个新的链表的头结点newHead,将原链表遍历出来的结点放到newhead的后面,即将当前节点cur指向新的头结点3,每遍...

2019-09-17 17:04:36 799 2

原创 Java实现带头结点的单链表

链表的特点1,以节点方式存储,是链式结构。2,每个节点包含data域,next域:指向下一个节点。3,链表的各个节点不一定是连续存储。4,链表分为带头节点和不带头节点两种类型的链表。实现原理添加节点:如下图所示,首先遍历原有链表,找到最后一个节点,将要增加的节点添加到该节点的后面。下面介绍如何找到最后一个节点。思路是这样的,先遍历整个链表,定义一个辅助变量tem...

2019-08-21 09:43:50 1132

原创 Java利用数组实现队列(二)——功能优化_循环数组

上一篇简单用数组实现了队列的功能,但是存在一点不足,就是数组不能达到复用的效果,所以这篇文章主要想说明下对数组实现队列的一个优化。分析:之前的数组,存在一个缺陷,就是当元素添加到数组满了之后,出队列却不能在继续添加了。所以,引入环形数组来解决这一问题front: 之前是指向队列元素的前一个位置,现在指向队列的第一个元素。即之前arr[front+1]表示队头位置,现在arr[front...

2019-08-20 10:43:49 198 1

sqlite加密工具.exe

免费的sqlite没有加密功能,根据实际需求,写了个数据库加密工具,欢迎体验~~

2019-09-26

最新版30套微信小程序

1.查拼音 工具--字典 2.2048 3.wxapp-zb-master装b生成器 4.wx-calculator-master计算器 5.weapp_lipstick-master口红试色 6.wxapp-sCalc-master计算器2 7.wechat-weapp-lifeTools-master空气查询 8.we_plain-master打飞机 9.WeatherHelper-master天气预报 10.QrPay-master二维码生成器 11.weapp-calender-master日历 12.account-note-master记账 13.dice-game-master骰子游戏 14.wxFpgame-master翻牌游戏 15.wxtest-master天气 16.MinApp-Compass-master指南针 17.wxapp-jsb-master猜拳 18.wxapp-calendar-master日历(版本不同) 19.weapp-bubugao-dict-master步步高字典 20.wxhandbook-master随手记账本 21.wechat-app-minesweeper-master扫雷 22.weapp-MatterAssistant-master事项助手 23.WXApp-FiveStone-master五子棋 24.Guess-song-name-in-group-master猜歌名 25.weixin-signature-master写字板 26.weapp-alphabet-master字母索引表 27.wximgcut-master图片剪切 28.weixinminiprogram02maplocation-master获取地图位置 29.weapp-city-select2-master城市选择 30.laohuangli-master老黄历微信小程序,支持宜/忌事项查阅。

2018-02-13

javaEE个人主页+签到系统+人员管理+前端后台

这个是我在家没事写的一套系统,界面美观,功能也实现了,签到+人员管理,主要是用于新手学习!

2018-02-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除