![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
蜗牛般的程序员
这个作者很懒,什么都没留下…
展开
-
linux之安装mysql
1、准备mysql安装包,将mysql安装包上传linux2、查看mysql是否安装,如果安装了,卸载mysql(1)查看[root@hadoop102 桌面]# rpm -qa|grep mysqlmysql-libs-5.1.73-7.el6.x86_64(2)卸载[root@hadoop102 桌面]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_643、解压mysql-libs.zip文件到当前目录[root@hadoop102 sof原创 2020-09-27 23:21:00 · 128 阅读 · 0 评论 -
Java之骑士周游回溯算法
测试方法及核心方法:public class HorseChessboard { private static int X;//棋盘的列数 private static int Y;//棋盘的行数 //创建一个数组,标记棋盘的各个位置是否被访问过 private static boolean visited[]; //使用一个属性,标记是否棋盘的所有位置都被访问过 private static boolean finished;//如果是true,表示成功原创 2020-09-24 23:11:31 · 268 阅读 · 0 评论 -
Java之克鲁斯卡尔算法求最小生成树
创建一个类EData,它的对象实例就表示一条边public class EData { char start;//边的一个点 char end;//边的另外一个点 int weight;//边的权值 //构造器 public EData(char start, char end, int weight) { this.start = start; this.end = end; this.weight = weigh原创 2020-09-23 22:28:27 · 669 阅读 · 0 评论 -
Java之迪杰斯特拉算法
典型最短路径算法(1)、弗洛伊德算法vs 迪杰斯特拉算法,迪杰斯特拉算法通过选点的被访问(2)、顶点,求出从出发访问顶点到其他顶点的最短路径。弗洛伊德算法中每个(3)、顶点都是出发访问点,所有需要将每一个顶点看做被访问顶点,求出从(4)、每个顶点到其他顶点的最短路径创建图矩阵:public class Graph { private char[] vertex;//顶点数组 private int[][] matrix;//邻接矩阵 private VisitedVert原创 2020-09-22 21:26:40 · 178 阅读 · 0 评论 -
Java之弗洛伊德算法
创建图及弗洛伊德核心算法public class Graph { private char[] vertex;//存放顶点的数组 private int[][] dis;//保存,从各个顶点出发到其他顶点的距离,最后的结果,也是保留在该数组 private int[][] pre;//保存到达目标顶点的前驱顶点 //构造器 /** * @param length 大小 * @param matrix 邻接矩阵 * @param ve原创 2020-09-21 23:49:56 · 431 阅读 · 0 评论 -
Java之普利姆算法最小生成树
创建图:class MGraph { int verxs;//表示图的节点个数 char[] date;//存放节点数据 int[][] weight;//存放边,就我们的邻接矩阵 public MGraph(int verxs) { this.verxs = verxs; date = new char[verxs]; weight = new int[verxs][verxs]; }}创建最小生成树->原创 2020-09-18 20:45:58 · 196 阅读 · 0 评论 -
Java之分治算法
main方法及分治算法相关代码:public static void main(String[] args) { hanoiTower(5, 'A', 'B', 'C'); } //汉诺塔的移动方法 //使用分治算法 public static void hanoiTower(int num, char a, char b, char c) { //如果只有一个盘 if (num == 1) { S原创 2020-09-17 22:46:52 · 187 阅读 · 0 评论 -
Java之贪心算法
思路分析及main方法测试:public static void main(String[] args) { //创建广播电台,放入到Map Map<String, HashSet> broadcasts = new HashMap<>(); //将各个电台放入到broadcasts HashSet<String> hashSet1 = new HashSet<>(); hash原创 2020-09-16 21:33:24 · 227 阅读 · 0 评论 -
Java之动态规划算法->背包问题
代码及相关分析思路如下:public class KnapsackProbleam { public static void main(String[] args) { //说明 物品的重量要和物品的价值相对应 int[] w = {1, 4, 3};//物品的重量 int[] val = {1500, 3000, 2000};// 物品的价值 这里val[i] 就是前面讲的v[i] int m = 4;//背包的容量原创 2020-09-15 20:36:11 · 196 阅读 · 0 评论 -
java之KMP搜索算法
kmp搜索算法 /** * @param str1 源字符串 * @param str2 子串 * @param next 部分匹配表,是子串对应的部分匹配表 * @return 如果是-1就没有匹配到,否则返回第一匹配的位置 */ public static int kmpSearch(String str1, String str2, int[] next) { //遍历 for (int i = 0, j原创 2020-09-14 22:09:57 · 149 阅读 · 0 评论 -
Java之二分查找非递归方式
/** * @param arr 待查找的数组 arr是升序排序 * @param target 需要查找的数 * @return 返回对应下标,-1表示没有找打 */ public static int binarySearch(int[] arr, int target) { int left = 0; int right = arr.length - 1; while (left <= ri.原创 2020-09-11 21:47:44 · 97 阅读 · 0 评论 -
Java之图计算
图的遍历分两种一种是深度 是纵向的,另外 一种是广度 是横向的。main方法测试及深度和广度方法public class Graph { private ArrayList<String> vertexList;//存储顶点集合 private int[][] edges;//存储图对应的邻结矩阵 private int numOfEdges;//表示边的数目 //定义给数组boolean[],记录某个节点是否被访问 private boolean原创 2020-09-10 21:06:23 · 621 阅读 · 0 评论 -
Java之AVL树 左旋转和右旋转
创建Node节点public class Node { int value; Node left; Node right; public Node(int value) { this.value = value; } //返回左子树的高度 public int leftHeight() { if (left == null) { return 0; } retu原创 2020-09-09 22:42:47 · 225 阅读 · 0 评论 -
Java之二叉树删除节点操作
创建Node节点public class Node { int value; Node left; Node right; public Node(int value) { this.value = value; } //查找要删除的节点 /** * @param value 希望删除的节点 * @return 如果找到返回该节点,否则返回null */ public Node search原创 2020-09-08 22:27:55 · 963 阅读 · 0 评论 -
Java之赫夫曼树压缩和解压
创建Node,待数据和权值class Node implements Comparable<Node> { Byte data;//存放数据本身,比如 'a'=>97 ' '=>32 int weight;//权值,表示字符出现的次数 Node left; Node right; public Node(Byte data, int weight) { this.data = data; this.weigh原创 2020-09-07 22:46:56 · 102 阅读 · 0 评论 -
Java之赫夫曼树
创建节点类,为了让Node,对象持续排序Collections集合排序,让Node 实现Comparable 接口public class Node implements Comparable<Node> { int value;//节点授权 Node left;//指左子节点 Node right;//指向右子节点 //前序遍历 public void preOrder(){ System.out.println(this);原创 2020-09-04 21:04:22 · 254 阅读 · 0 评论 -
Java之中序二叉树实现
创建HeroNode 节点及方法class HeroNode { private int no; private String name; private HeroNode left;//默认null private HeroNode right;//默认null //说明 //1、说明如果leftType==0 表示指向的是左子树,如果1 则表示指向前驱节点 //2、如果 rightType == 0 表示指向的是右子树,如果是1 表示指向后继节点原创 2020-09-03 21:48:22 · 154 阅读 · 0 评论 -
Java之堆排序
public class HeapSort { public static void main(String[] args) { //要求将数组进行升序排序// int[] arr = {4, 6, 8, 5, 9,-1,99,56}; int[] arr = new int[8000000]; for (int i = 0; i < 8000000; i++) { arr[i] = (int) (Mat原创 2020-09-02 22:24:04 · 344 阅读 · 0 评论 -
Java之二叉树前中后遍历
先创建HeroNode 节点public class HeroNode { private int no; private String name; private HeroNode left;//默认null private HeroNode right;//默认null public HeroNode(int no, String name) { this.no = no; this.name = name; }原创 2020-09-01 22:49:42 · 161 阅读 · 0 评论 -
Java之HashTab基本用法
表示一个雇员public class Emp { public int id; public String name; public Emp next;//next 默认为 null public Emp(int id, String name) { super(); this.id = id; this.name = name; }}创建EmpLinkedList,表示链表public class Emp原创 2020-08-31 21:50:48 · 423 阅读 · 0 评论 -
Java之斐波那契数列
//因为后面我们用到mid=low+F(k-1)-1,需要使用斐波那契数列,因此我们需要先获取到//非递归方法得到一个斐波那契数列 public static int maxSize = 20; public static int[] fib() { int[] f = new int[maxSize]; f[0] = 1; f[1] = 1; for (int i = 2; i < maxSize; i++) {原创 2020-08-28 22:36:50 · 500 阅读 · 0 评论 -
Java之插值查找算法
插值查找算法相当于二分查找的优化版应用场景:①对于数据量较大,关键字分布比较均匀的查找表来说,采用插值查找,速度较快②关键字分布不均匀的情况下,该方法不一定比折半查找要好注意:插值查找算法,也要求数组是有序的代码如下: /** * @param arr 数组 * @param left 左边索引 * @param right 右边索引 * @param findVal 查找的值 * @return 如果找到,就返回对应的下标,原创 2020-08-27 23:20:57 · 311 阅读 · 0 评论 -
Java之二分查找
①未考虑数组中有重复的值的情况代码:/** * @param arr 数组 * @param left 左边的索引 * @param right 右边的索引 * @param findVal 要查找的值 * @return 如果找到就返回下标,如果没有找到,就返回-1 */ public static int binarySearch(int[] arr, int left, int right, int findVal原创 2020-08-26 22:21:20 · 83 阅读 · 0 评论 -
Java子基数排序
基数排序推导过程:public static void radixSort(int[] arr) { //定义一个二维数组,表示10个桶,每个桶就是一个一维数组 //说明 //1、二维数组包含10个一维数组 //2、为了防止在放入数的时候,数据溢出,则每个一维数组(桶),带下定为arr.length //3、明确,基数排序时使用空间换时间的经典算法 int[][] bucket = new int[10][ar原创 2020-08-25 22:47:27 · 136 阅读 · 0 评论 -
Java之归并排序
归并排序的复杂度是 n-1①合并方法代码如下:/** * @param arr 排序的原始数组 * @param left 左边有序序列的初始索引 * @param mid 中间索引 * @param right 右边索引 * @param temp 中转数组 */ public static void merge(int[] arr, int left, int mid, int right, int[] temp) {原创 2020-08-24 22:28:41 · 153 阅读 · 0 评论 -
Java之快速排序
快速排序方法: public static void quickSort(int[] arr, int left, int right) { int l = left;//左下标 int r = right;//右下标 //pivot 中轴值 int pivot = arr[(left + right) / 2]; int temp = 0;//临时变量 作为交换时使用 //while 循环的目的是让比pi原创 2020-08-21 23:27:55 · 138 阅读 · 1 评论 -
Java之希尔排序
希尔排序推导过程:public static void shellSort(int[] arr) { int temp = 0; //希尔排序的第1轮排序 //因为第1轮排序,是将10个数据分成了5组 for (int i = 5; i < arr.length; i++) { //遍历各组中所有的元素(共5组,每组有2个元素),步长5 for (int j = i - 5; j >原创 2020-08-20 22:42:48 · 125 阅读 · 0 评论 -
Java之插入排序
插入排序推导过程:public static void insertSort(int[] arr) { //使用逐步推导的方式来 //第一轮{101,34,119,1}=》{34,101,119,1} //定义待插入的数 int insertVal = arr[1]; int insertIndex = 1 - 1;//即arr[1]的前面这个数的下标 //给insertVal 找到插入的位置原创 2020-08-19 22:41:00 · 88 阅读 · 0 评论 -
Java之选择排序
选择排序推导过程:public static void selectSort(int[] arr) { //使用逐步推导的方式来,讲解选择排序 //第1轮 //原始的数组:101,34,119,1 //第一轮排序:1,34,119,101 //算法 先简单 --> 到复杂,就是可以把一个复杂的算法,拆分成简单的问题-->逐步解决 //第1轮 int原创 2020-08-18 22:53:20 · 77 阅读 · 0 评论 -
Java数据结构之冒泡排序
冒泡排序的演变过程如下:public class BubbleSort { public static void main(String[] args) { int arr[] = {3, 9, -1, 10, -2}; int temp = 0; //第一趟排序,就是将第二大的数排在倒数第一位 for (int j = 0; j < arr.length - 1 - 1; j++) {原创 2020-08-17 22:05:57 · 125 阅读 · 0 评论 -
Java数据结构之递归-八皇后问题(回溯算法)
public class Queue8 {//定义max表示共有多少个皇后int max = 8;//定义数组 array,保存皇后放置位置的结果,比如 arr = {0,4,7,5,2,6,1,3}int[] array = new int[8];static int count = 0;public static void main(String[] args) { //测试,8皇后是否正确 Queue8 queue8 = new Queue8(); queue8.c原创 2020-08-14 21:57:17 · 87 阅读 · 0 评论 -
Java数据结构之中缀表达式转后缀表达式
//编写一个类Operation 可以返回一个运算符 对应的优先级public class Operation {private static int ADD = 1;private static int SUB = 1;private static int MUL = 2;private static int DIV = 2;//返回对应的优先级数字public static int getValue(String operation) { int result = 0;原创 2020-08-12 22:57:59 · 157 阅读 · 0 评论 -
Java数据结构之栈
通过栈实现表达式的运算,stact 相应的方法,添加 push() 及取出 pop()//定义一个ArrayStack 表示栈public class ArrayStack1 {private int maxSize;//栈的大小private int[] stack;//数组,数组模拟栈,数据就放在数组中private int top = -1;//top 表示栈顶,初始化为 -1//构造器public ArrayStack1(int maxSize) { this.maxSize原创 2020-08-10 22:47:03 · 103 阅读 · 0 评论 -
Java之单链表面试题
面试题如下:1、实现单链表反转2、查找单链表中的倒数第k个节点3、实现了逆序打印的效果//定义HeroNode , 每个HeroNode 对象就是一个节点public class HeroNode {public int no;public String name;public String nickname;public HeroNode next;//指向下一个节点//构造器public HeroNode(int hNo, String hName, String hNickna原创 2020-08-06 22:28:51 · 223 阅读 · 0 评论 -
Java数据结构之链表
测试代码:单链表需要按照编号的顺序添加思路:1、首先找到新的节点的位置,是通过辅助变量(指针),通过遍历来搞定2、新的节点 next = temp.next3、将temp.next = 新的节点public class SingleLinkedListDemo {public static void main(String[] args) { //进行测试 //先创建节点 HeroNode hero1 = new HeroNode(1, "宋江", "及时雨");原创 2020-08-04 21:10:16 · 100 阅读 · 0 评论 -
Java数据结构之队列案例
1、使用数组模拟队列 - 编写一个ArrayQueue类public class ArrayQueue {//表示数组的最大容量private int maxSize;//对列头private int front;//对列尾private int rear;//该数据用于存放数据private int[] arr;//创建队列的构造器public ArrayQueue(int arrMaxSize) { this.maxSize = arrMaxSize; arr =原创 2020-08-03 21:40:31 · 253 阅读 · 0 评论 -
JUC之线程池
一、定义:提供了一个线程队列,队列中保存着所有等待的线程。作用:避免了创建与销毁额外开销,提高了相应的速度。二、线程池的体系结构|–**ExecutorService 子接口:线程池的主要接口|–ThreadPoolExecutor 实线类|–ScheduledExecutorService 子接口:负责线程的调|–ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor,实现ScheduledThreadPoolExecutor三、工具类:Exec原创 2020-07-30 21:53:53 · 104 阅读 · 0 评论