
JAVA算法与数据结构学习
Frank---7
从JAVA转C++失败,现在继续卷JAVA的小菜鸡一枚,希望和大家共同进步!
展开
-
马踏棋盘算法(骑士周游)+贪心优化
思路分析代码实现package com.atguigu.horse;import java.awt.*;import java.util.ArrayList;import java.util.Comparator;public class HorseChessboard { private static int x;//棋盘的列数 private static int y;//棋盘的行数 //创建一个数组,标记棋盘的各个位置是否被访问过 private s原创 2021-04-08 19:06:23 · 64260 阅读 · 0 评论 -
全排列
public static void f(int k){ if(k==9){//一种排列已经生成 if(check()) ans++; } //从k往后每个数字都可以放在k位 for (int i = k; i < 9; i++) { int temp=a[i]; a[i]=a[k]; a[k]=temp;..原创 2021-04-13 21:28:25 · 97101 阅读 · 0 评论 -
弗洛伊德算法
思路分析代码实现package com.atguigu.floyd;import java.util.Arrays;public class FloydAlgorithm { public static void main(String[] args) { //测试看看图是否创建成功 char[] vertex={'A','B','C','D','E','F','G'}; //创建邻接矩阵 int[][] matrix原创 2021-04-07 13:54:21 · 59927 阅读 · 0 评论 -
马踏棋盘算法(骑士周游)
思路分析代码实现package com.atguigu.horse;import java.awt.*;import java.util.ArrayList;import java.util.Comparator;public class HorseChessboard { private static int x;//棋盘的列数 private static int y;//棋盘的行数 //创建一个数组,标记棋盘的各个位置是否被访问过 private s原创 2021-04-08 19:07:29 · 65245 阅读 · 0 评论 -
2016蓝桥杯省赛---java---A---8(取球博弈)
题目描述思路分析dfs代码实现package lanqiao;import java.util.Arrays;import java.util.Scanner;public class Main { public static int []n; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); n=new int[3];原创 2021-04-16 11:50:51 · 75946 阅读 · 0 评论 -
相邻数字+(正月点灯笼的动态规划2)(递归+DP)---JAVA
思路分析代码实现递归实现package com.kuang.study.lanqiao;public class Main { public static void main(String[] args) { int arr[]={1,2,4,1,7,8,3}; int max = d(arr,arr.length-1); System.out.println(max); } public static int d(int原创 2021-04-09 12:45:17 · 65973 阅读 · 1 评论 -
数字奇数和偶数的判断
package lanqiao;/** * @创建人 wdl * @创建时间 2021/4/16 * @描述 */public class TEST { public static void main(String[] args) { int a=7,b=8; if((a&1)==1){ System.out.println("a是奇数"); } if((b&1)==0){原创 2021-04-16 11:47:02 · 73471 阅读 · 0 评论 -
二叉树的层序遍历
题目描述思路分析代码实现package com.atguigu.tree.level;import java.text.Normalizer;import java.util.LinkedList;public class levelOrder { public static void main(String[] args) { //先需要创建一颗二叉树 BinaryTree binaryTree = new BinaryTree();原创 2021-04-25 13:11:16 · 69508 阅读 · 5 评论 -
BFS
public void bfs(boolean[]isVisited,int i){ int u;//表示队列的头结点对应的下标 int w;//表示邻接节点w //队列 LinkedList queue = new LinkedList(); //访问节点,输出节点信息 System.out.println(getValueByIndex(i)+"=>"); isVisited[i]=t.原创 2021-04-21 15:39:29 · 207 阅读 · 0 评论 -
DFS
//深度优先算法 //i第一次就是0 public void dfs(boolean[]isVisited,int i){ //首先我们访问该节点 System.out.println(getValueByIndex(i)); isVisited[i]=true; int w=getFirstNeighbor(i); while (w!=-1){ if(!isVisited[w])...原创 2021-04-21 14:45:05 · 69688 阅读 · 1 评论 -
迪杰斯特拉算法(最短路径)
描述算法过程代码实现package com.atguigu.dijkstra;import com.sun.xml.internal.fastinfoset.algorithm.BooleanEncodingAlgorithm;import javax.sound.midi.Soundbank;import java.util.Arrays;import java.util.TimerTask;public class DijkstraAlgorithm { public原创 2021-04-07 11:24:14 · 59597 阅读 · 1 评论 -
克鲁斯卡尔算法(公交站问题)
应用场景思路分析代码实现package com.atguigu.kruskal;import java.util.Arrays;/** * @创建人 wdl * @创建时间 2021/4/6 * @描述 */public class KruskalCase { private int edgNum;//边的个数 private char[] vertexs;//顶点数组 private int[][] matrix;//邻接矩阵 //使用INF表原创 2021-04-06 15:48:54 · 55694 阅读 · 1 评论 -
普里姆算法(修路问题)+图解
图解代码实现package com.atguigu.prim;import java.util.Arrays;/** * @创建人 wdl * @创建时间 2021/4/5 * @描述 */public class PrimAlgorithm { public static void main(String[] args) { //测试看看图是否创建OK char[] data = {'A', 'B', 'C', 'D', 'E', 'F原创 2021-04-05 13:26:40 · 15438 阅读 · 2 评论 -
贪心算法
package com.atguigu.greedy;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;/** * @创建人 wdl * @创建时间 2021/4/4 * @描述 */public class GreedyAlgorithm { public static void main(String[] args) { //创建广播电台,放入到Map原创 2021-04-04 20:59:48 · 56696 阅读 · 0 评论 -
求集合中的公共元素
package com.atguigu.TEST;import javax.swing.plaf.basic.BasicScrollPaneUI;import java.util.HashSet;/** * @创建人 wdl * @创建时间 2021/4/4 * @描述 */public class Test { public static void main(String[] args) { HashSet<String> hashSet1 = ne原创 2021-04-04 14:43:38 · 54562 阅读 · 0 评论 -
KMP算法
package com.atguigu.kmp;import java.util.Arrays;public class KMPAlgorithm { public static void main(String[] args) { String str1= "BBC ABCDAB ABCDABCDABDE"; String str2="ABCDABD"; int[] next = kmpNext("ABCDABD"); Sys原创 2021-04-04 16:14:35 · 55410 阅读 · 0 评论 -
字符串暴力匹配算法+思路分析
思路分析代码实现package com.atguigu.kmp;/** * @创建人 wdl * @创建时间 2021/4/4 * @描述 */public class ViolenceMatch { public static void main(String[] args) { //测试暴力匹配算法 String str1= "硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好"; String str2="尚硅谷你尚硅你";原创 2021-04-04 14:43:26 · 54293 阅读 · 0 评论 -
背包问题+图解
图解代码实现package com.atguigu.dynamic;/** * @创建人 wdl * @创建时间 2021/4/3 * @描述 */public class KnapsackProblem { public static void main(String[] args) { int[] w={1,4,3};//物品的重量 int[] val={1500,3000,2000};//物品的价值 这里的val[i]就是前面的v[i]原创 2021-04-03 16:38:17 · 52887 阅读 · 0 评论 -
分治算法---汉诺塔
思路分析代码实现package com.atguigu.dac;public class Hanoitower { public static void main(String[] args) { hanoiTower(5,'A','B','C'); } //汉诺塔移动的方法 //使用分治算法 public static void hanoiTower(int num,char a,char b,char c){ //如原创 2021-04-03 22:31:58 · 53554 阅读 · 1 评论 -
二分查找非递归方式实现
思路分析代码实现package com.atguigu.binarysearchnorecursion;/** * @创建人 wdl * @创建时间 2021/4/2 * @描述 */public class BinarySearchNoRecur { public static void main(String[] args) { //测试 int[] arr={1,3,8,10,11,67,89}; int i = binary原创 2021-04-03 22:32:47 · 53355 阅读 · 0 评论 -
DFS VS BFS
实际案例代码实现package com.atguigu.graph;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;/** * @创建人 wdl * @创建时间 2021/4/2 * @描述 */public class Graph { private ArrayList<String> vertexList;//存储顶点集合 private原创 2021-04-02 19:44:01 · 50894 阅读 · 0 评论 -
图的广度优先算法+遍历
图解代码实现package com.atguigu.graph;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;/** * @创建人 wdl * @创建时间 2021/4/2 * @描述 */public class Graph { private ArrayList<String> vertexList;//存储顶点集合 private in原创 2021-04-02 19:29:34 · 50834 阅读 · 0 评论 -
图的深度优先遍历+图解
图解代码实现package com.atguigu.graph;import java.util.ArrayList;import java.util.Arrays;/** * @创建人 wdl * @创建时间 2021/4/2 * @描述 */public class Graph { private ArrayList<String> vertexList;//存储顶点集合 private int[][] edges;//存储图对应的邻接矩阵原创 2021-04-02 16:35:33 · 51180 阅读 · 0 评论 -
图的快速入门
快速入门案例代码实现package com.atguigu.graph;import java.util.ArrayList;import java.util.Arrays;/** * @创建人 wdl * @创建时间 2021/4/2 * @描述 */public class Graph { private ArrayList<String> vertexList;//存储顶点集合 private int[][] edges;//存储图对应的邻接矩阵原创 2021-04-02 15:04:26 · 49669 阅读 · 1 评论 -
AVL树双旋转+图解
图解代码实现package com.atguigu.avl;/** * @创建人 wdl * @创建时间 2021/3/30 * @描述 */public class AVLTreeDemo { public static void main(String[] args) {// int[] arr={4,3,6,5,7,8}; //创建一个AVLTree对象// int arr[]={10,12,8,9,7,6};原创 2021-03-31 10:27:55 · 51411 阅读 · 8 评论 -
二叉排序树的删除+图解
图解第一种情况第二种情况第三种情况代码实现package com.atguigu.binarysorttree;import com.sun.javafx.sg.prism.NGImageView;import javafx.scene.transform.Rotate;import java.io.InputStream;import java.util.Timer;/** * @创建人 wdl * @创建时间 2021/3/29 * @描述 */public原创 2021-03-30 11:07:04 · 56784 阅读 · 7 评论 -
用赫夫曼树进行文件解压
思路分析代码实现package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic;import com.sun.org.glassfish.external.statistics.StringStatistic;import javax.xml.bind.SchemaOutputResolver;import java.io.*;import java.secur原创 2021-03-29 19:46:08 · 53076 阅读 · 1 评论 -
用赫夫曼树进行文件的压缩
思路分析代码实现package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic;import com.sun.org.glassfish.external.statistics.StringStatistic;import javax.xml.bind.SchemaOutputResolver;import java.io.*;import java.secur原创 2021-03-29 19:23:21 · 52774 阅读 · 1 评论 -
利用赫夫曼编码进行数据解压
基本概念代码实现package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic;import com.sun.org.glassfish.external.statistics.StringStatistic;import java.security.AlgorithmConstraints;import java.util.*;/** * @创建人 wdl原创 2021-03-29 18:54:33 · 52827 阅读 · 3 评论 -
赫夫曼编码字节数组
思路分析代码实现package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic;import com.sun.org.glassfish.external.statistics.StringStatistic;import java.util.*;/** * @创建人 wdl * @创建时间 2021/3/27 * @描述 */public class原创 2021-03-29 10:58:36 · 52885 阅读 · 1 评论 -
生成赫夫曼编码表
package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic;import com.sun.org.glassfish.external.statistics.StringStatistic;import java.util.*;/** * @创建人 wdl * @创建时间 2021/3/27 * @描述 */public class HuffmanCod原创 2021-03-28 21:41:31 · 52269 阅读 · 3 评论 -
基数排序+速度测试
package com.atguigu.sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * @创建人 wdl * @创建时间 2021/3/22 * @描述 */public class RadixSort { public static void main(String[] args) { //53, 3, 542, 748, 14原创 2021-03-27 16:30:18 · 7294 阅读 · 1 评论 -
看了通信领域中信息的处理的三种方式我终于知道电报能发送信息的原理了
方式一定长编码方式二定长编码方式三赫夫曼编码原创 2021-03-27 10:06:48 · 5506 阅读 · 3 评论 -
赫夫曼树+图解
图解代码实现package com.atguigu.huffmanTree;import javax.swing.*;import java.awt.geom.RoundRectangle2D;import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * @创建人 wdl * @创建时间 2021/3/26 * @描述 */public class HuffmanTree原创 2021-03-26 19:59:04 · 3655 阅读 · 1 评论 -
堆排序代码实现
package com.atguigu.tree;import java.util.Arrays;/** * @创建人 wdl * @创建时间 2021/3/26 * @描述 */public class HeapSort { public static void main(String[] args) { //要求将数组进行升序排序 int arr[]={4,6,8,5,9}; heapSort(arr); } /原创 2021-03-26 13:54:07 · 5459 阅读 · 0 评论 -
遍历线索化二叉树+图解
图解代码实现package com.atguigu.tree.threadedbinarytree;/** * @创建人 wdl * @创建时间 2021/3/25 * @描述 */public class ThreadedBinaryTreeDemo { public static void main(String[] args) { //测试一把中序线索化二叉树的功能 HeroNode root = new HeroNode(1, "tom")原创 2021-03-26 09:35:37 · 724 阅读 · 1 评论 -
顺序存储二叉树
package com.atguigu.tree;/** * @创建人 wdl * @创建时间 2021/3/25 * @描述 */public class ArrBinaryTreeDemo { public static void main(String[] args) { int[] arr={1,2,3,4,5,6,7}; //创建一个ArrBinaryTree ArrBinaryTree arrBinaryTree = new原创 2021-03-25 20:12:30 · 5568 阅读 · 2 评论 -
二叉树删除节点+思路分析
思路分析代码实现原创 2021-03-25 19:32:10 · 5525 阅读 · 0 评论 -
二叉树的前中后序查找+思路分析
思路分析代码实现package com.atguigu.tree;/** * @创建人 wdl * @创建时间 2021/3/24 * @描述 */public class BinaryTreeDemo { public static void main(String[] args) { //先需要创建一颗二叉树 BinaryTree binaryTree = new BinaryTree(); //创建需要的节点原创 2021-03-25 13:27:43 · 494 阅读 · 3 评论 -
二叉树的前中后序遍历
说明代码实现package com.atguigu.tree;/** * @创建人 wdl * @创建时间 2021/3/24 * @描述 */public class BinaryTreeDemo { public static void main(String[] args) { //先需要创建一颗二叉树 BinaryTree binaryTree = new BinaryTree(); //创建需要的节点 He原创 2021-03-25 11:30:29 · 52525 阅读 · 1 评论