![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
Legolas~
这个作者很懒,什么都没留下…
展开
-
数据结构与算法基础:java创建哈夫曼树
import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.LinkedList;import java.util.Queue;public class HuffmanTree { //创建哈夫曼树 public static void crea...原创 2020-04-12 21:51:34 · 279 阅读 · 0 评论 -
单向链表及java代码实现
链表是一种常见的数据结构,其在物理存储单元上非连续、非顺序,由一系列的结点组成,而结点在运行时可以动态生成。每个结点包含两个部分:1.数据域,用来存储数据元素;2.指针域,用来指向该结点的下一个结点。而单向链表是链表的一种,链接方向是单向的,要想访问单向链表的某个结点必须从头部开始顺序遍历,链表的头部也叫做头结点,相当于一个数据域为空,指针域指向链表中第一个结点的结点。同时,由于最后一个结点没有...原创 2020-02-07 17:51:49 · 438 阅读 · 0 评论 -
哈希表
Hash tabel:哈希表,又称散列表,是一种根据键码值(Key Value)而直接进行访问的数据结构。它把键码值映射到表中的一个位置来存储和访问,映射函数叫做哈希函数(又称散列函数)。在哈希表中,每个存储单元我们称之为位桶数组,而每个位桶数组中的元素是链表数据结构。这里的链表是单向链表,每个链表都有两个数据域,一个用来存放键码key,另一个用来存放值value,除此之外,还有一个标签即哈希值...原创 2020-02-03 14:01:23 · 520 阅读 · 0 评论 -
java实现插入排序法
/* * Insert Sort */public class Insert { public static void main(String[] args) { int[] data={32,2,26,16,50,36,15,20}; int temp,index; for(int i=1;i<data.length;i++) { temp=data[i]; /...原创 2020-02-03 00:02:35 · 408 阅读 · 0 评论 -
计数排序算法
计数排序算法必须要根据实际的数组元素的值确定一个合适的区间,例如对于数组{5,2,13,10,34,20}而言,元素最大值为34,现确定区间[0,34]或者区间[0,40],那么我们就可以根据区间创建一个大小为34或者40的数组,我们发现所创建的数组下标索引为0~34或者 0~40,恰好是升序的数字序列。我们通过遍历原来数组的元素,将元素与创建的新数组的下标进行比较,如果该元素就是相应的下标索引,...原创 2020-02-01 17:22:32 · 627 阅读 · 0 评论 -
java实现选择排序算法
/* * Selecting Sort */public class Sort { public static void main(String[] args) { int[] a= {32,18,20,58,10}; int min=0,temp=0,index=0,i; for(i=0;i<a.length-1;i++) { min=a[i]; temp=...原创 2020-02-01 13:15:44 · 435 阅读 · 0 评论 -
java冒泡排序算法
import java.util.Random;public class Test1 { public static void main(String[] args) { int[] list=new int[50]; int temp=0; Random random=new Random(); for(int j=0;j<list.length;j++) l...原创 2020-01-30 18:38:20 · 372 阅读 · 0 评论 -
java算法面试题
题目:int values[] = {80099, 16114, 63108, 25032, 31044, 59069, 39099, 13110, 34101, 66120,19116, 72105, 70045, 38032, 41110, 12105, 75110, 27105, 1105, 9114,67117, 20101, 21100, 11032, 79046, 32112, 511...原创 2020-01-29 20:58:42 · 228 阅读 · 0 评论 -
java算法面试题
50个人围成一圈数到三和三的倍数时出圈,问剩下的人是谁?在原来的位置是多少?代码如下:import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;public class Game { public static void removeTar(int n,int m) { int...原创 2020-01-29 14:28:40 · 300 阅读 · 0 评论 -
java算法面试题——随机产生20个不同的字符并按升序排序
import java.util.HashSet;import java.util.Iterator;import java.util.Random;import java.util.Set;import java.util.TreeSet;public class Test1 { public Set getChar() { Set charSet=new HashSet();...原创 2020-01-28 20:04:07 · 462 阅读 · 0 评论 -
java实现最长的包含有效括号的子串的长度
package Bracket;import java.util.ArrayList;public class Stack { ArrayList<Character> list=new ArrayList<>(); public void push(Character s) { //将左括号压入栈中 list.add(s); } public void...原创 2020-01-27 17:03:08 · 846 阅读 · 0 评论 -
java实现括号匹配算法
package Bracket;import java.util.ArrayList;public class Stack { ArrayList<Character> list=new ArrayList<>(); public void push(Character s) { //将左括号压入栈中 list.add(s); } public void...原创 2020-01-27 16:09:17 · 1006 阅读 · 0 评论 -
java实现抢红包算法
这里简单介绍一下二倍均值法。我们为了保证每个人抢到的红包都均匀分布在合适的区间内,故引入二倍均值法。我们发现红包金额并不是随机分布在0~金额总数的区间内,而是分布在[0.01,红包余额/剩余人数*2)的区间内,即二倍均值法。由于金额单位最小至分,所以我们不能随机产生任意浮点数,必须事先将金额扩大100倍,最后再除以100精确到小数点后两位。以下是java代码实现:package RedPoc...原创 2020-01-20 22:39:07 · 676 阅读 · 0 评论 -
用java实现聊天程序
代码的服务端和客户端都是本机,以下是服务端程序代码:import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public ...原创 2019-12-09 20:12:01 · 305 阅读 · 0 评论 -
用java实现简易的酒店后端用户信息交互平台
首先在程序中,定义的酒店共有四层,除去前台一层,剩下的三层是客房,一层楼一共有八间客房,在酒店中四层包括四号房间由于谐音的缘故一般不用来做楼层和房间号标记,故都用五来代替。另外,房间信息(这里主要指的是房间是否为空房)利用散列表的数据结构进行存储和修改。以下是程序代码和运行结果:package cn.sxt.thread;import java.text.DateFormat;import...原创 2019-11-25 10:35:46 · 287 阅读 · 0 评论 -
java的Future设计模式实战
假设有个任务需要执行比较长的时间,而且有多个任务需要执行,某些任务之间可能有所关联,那么普通的java线程操作只能是将调度权交给CPU,由CPU决定某一时刻执行哪个任务,那么其余任务只能被阻塞起来,对于用户而言只能苦苦等待。然而Future接口提供了较好的方法来克服长时间等待的问题,即对于几个任务而言,如果第一个任务需要执行较长时间,而第二个任务和第一个任务之间又没有任何关联,那么Future接口...原创 2019-11-24 16:55:27 · 219 阅读 · 0 评论 -
用java实现利用Vigenre方阵对明文进行加密解密
Vigenre密码使用26个密文字母表,它们依次把明文字母表循环右移0,1,2,……,25位的结果。我们选用一个词组或者短语作为密钥,以密钥字母控制使用哪一个密文字母表。把26个密文字母表排在一起称为Vigenre方阵。由此可知,Vigenre是一个26*26的方阵。Vigenre密码的代替规则是用明文字母在Vigenre方阵中的列和密钥字母在Vigenre方阵中的行的交点处的字母来代替该明文字...原创 2019-10-17 20:30:02 · 633 阅读 · 0 评论 -
java创建二叉树及三种遍历方式的实现
简单介绍一下二叉树,二叉树是每个结点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。二叉树的遍历有三种情况,前序遍历、中序遍历和后序遍历,算法一般有两种,即递归和迭代循环。其中递归算法比较简单,代码量较少,但是迭代循环比较复杂,需要用栈进行操作,代码量大,程序耗时多,不建议用迭代进行二叉树遍历。首先创建一个名为Bintree的类,类中先定义二叉树数据结构的一系列属性:这里用Li...原创 2019-09-06 18:33:01 · 1051 阅读 · 0 评论 -
浅析java的enumerate方法
enumerate方法用来将ThreadGroup线程组中的active线程全部复制到Thread类型的数组中,并且返回数组中元素个数,即线程组中active线程数量。有以下两种调用方法: public int enumerate(Thread[] list) { this.checkAccess(); return this.enumerate((Threa...原创 2019-10-28 16:25:45 · 2913 阅读 · 0 评论 -
浅析java的synchronized
synchronized关键字可以实现一个简单的策略来防止线程干扰和内存一致性错误,如果一个对象对多个线程是可见的,那么对该对象的所有读或者写都将通过同步的方式来进行。这个关键字提供了一种锁的机制,能够确保共享变量的互斥访问,从而防止数据不一致问题的出现。但是synchronized只能修饰方法和代码块,不能修饰变量和类,它包含两个JVM指令(monitor enter 和monitor exit...原创 2019-09-10 18:37:02 · 635 阅读 · 0 评论