- 博客(38)
- 收藏
- 关注
原创 hive 启动报错 com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
原因hadoop和hive的两个guava.jar版本不一致两个位置分别位于下面两个目录:/opt/module/hive/lib//opt/module/hadoop-3.1.3/share/hadoop/common/lib解决办法删除低版本的那个,将高版本的复制到低版本目录下...
2021-09-04 11:05:15 2207
原创 选择排序
// 选择排序 public static int[] SelectSort(int[] arr) { // 遍历数组最小值的指针 int min_val; // 遍历数组 for (int i = 0; i < arr.length - 1; i++) { // 遍历arr.length - 1趟 min_val = i; // 这个指针是动态变化的 for (int j = i.
2020-09-01 11:19:30 141
原创 计数排序
public static int[] CountSort(int[] arr, int max) { // 额外开辟一个数组,存储数组中的元素(最大值为新数组的长度) int[] extra_arr = new int[max + 5]; // 遍历新数组的指针 int extra_count = 0; // 遍历原数组,如果新数组中没有原数组的元素,就置为0,否则,+1统计次数 for (int i = 0.
2020-09-01 10:15:58 123
原创 快速排序
// 快速排序 public static void QuickSort(int[] arr, int left, int right) { // 边界条件 if (left >= right) { return; } int partition = partition(arr, left, right); // 左递归快排 partition(arr, left, par.
2020-08-31 15:28:48 181
原创 归并排序算法
public static void mergeSort(int[] array, int left, int right) { if (left >= right) return; int middle = (left + right) >> 1; mergeSort(array, left, middle); mergeSort(array, middle + 1, right);
2020-08-31 11:45:32 112
原创 贪心算法的应用-集合覆盖
1.问题描述 有几个广播站,分别覆盖各自的城市,选出最少的广播站,使其覆盖所有的城市2.代码实现package GreedyAlgotithm;import java.awt.geom.Area;import java.lang.reflect.Array;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;/** * @program: 22.贪心算法的应用-集合覆盖问题 *
2020-08-16 18:10:45 165
原创 马踏棋盘算法使用贪心算法改进
1.主要改进 对于当前节点的下一个位置,计算马儿的哪个下一节点对应的下一个节点(即下下个节点)的总数最少,就将哪个下一节点视为最优。因为这样的话,回溯次数会减少。2.代码实现import java.awt.*;import java.sql.Array;import java.util.ArrayList;import java.util.Comparator;/** * @program: 21.骑士周游问题 * @description: * @author: Zhou Jian
2020-08-15 16:37:21 300
原创 马踏棋盘算法(骑士周游问题) 暴力解决法
1.算法描述 在 8×8 的棋盘上,用一个马按照马步跳遍整个棋盘,要求每个格子都只跳到一次,求出走过的路径。2.代码实现import java.awt.*;import java.sql.Array;import java.util.ArrayList;/** * @program: 21.骑士周游问题 * @description: * @author: Zhou Jian * @create: 2020-08-14 20:13 */public class horse {
2020-08-15 15:17:18 516
原创 弗洛伊德算法
1.说明 和迪杰斯特拉算法不同,floyd算法解决的是图中所有顶点到其他顶点的最短距离,需要维护两个数组,一个记录前驱节点,一个记录最短距离。2.代码1.floyd算法public class Graph { private char[] vertexes; // 存放顶点的一维数组 private int[][] pre; // 存放各个顶点的前驱顶点的矩阵,初始化是顶点本身 private int[][] dis; // 各个顶点到其余顶点的最短路径的矩阵
2020-08-12 22:08:01 201
原创 迪杰斯特拉算法
1.顶点状态import java.util.Arrays;public class visitVertex { /*-------------成员变量------------*/ static int Max = Integer.MAX_VALUE; // 记录顶点是否被访问,0:未被访问过,1:已被访问 public int[] isNo_Visited; // 记录前一个顶点的索引 public int[] pre_vertex; //
2020-08-09 13:47:00 122
原创 Kruskal算法实现
1.主要思想 和Prim算法不同,克鲁斯卡尔算法是依次遍历图中的边,按照边的权值进行构造最小生成树,关键是要判断每次加入的边和已经加入的边是否构成回路(这是关键),最后生成了一个有(vertex-1)条边的最小生成树。2.代码实现1.克鲁斯卡尔类package KruskalAlgothm;import javax.swing.*;import java.util.Arrays;public class Kruskal { // 成员变量 private int edge
2020-08-09 13:38:49 290
原创 Prim算法实现
1.主要思想 Prim算法,从图的某一个顶点开始,找到权值最小的顶点,依次遍历,最后生成一个最小生成树2.图示![在这里插入图片描述](https://img-blog.csdnimg.cn/20200809132444220.PNG)3.代码实现1.图package prim;public class Graph { int vertex; // 顶点的个数 char[] value; // 顶点的值 int[][] weight;// 图的邻接矩阵
2020-08-09 13:35:24 388 1
原创 KMP算法实现字符串匹配
1.背景 字符串匹配问题,如果使用暴力法求解,则效率很低,每次都要使用子串依次比较。2.关键点 KMP算法使用Next数组,来确定下一个要匹配的字符的下标,这样大大地减少了不必要的比较3.代码实现import java.util.Arrays; /** * KMP算法 * * @param s1 母串 * @param s2 子串 * @param next * @return 如果匹配失败,返回-1,否则返回成
2020-08-09 13:22:23 254
原创 暴力解决字符串匹配的算法
1.思路 字符串的暴力匹配,使用一个while循环即可,但是效率比较低,时间复杂度也不够低。2.代码实现 public static int ViolenceMatch(String parent_str, String child_str) { // 要遍历的字符数组 char[] parent = parent_str.toCharArray(); char[] child = child_str.toCharArray();
2020-08-09 13:19:35 225
原创 01背包问题
1.注意点 和分治算法不同,动态规划算法中,分解的每一步都和前一步、下一步有联系2.代码实现public class Bag { public static void main(String[] args) { int[] weight = {1, 4, 3}; // 物品的重量 int[] value = {1500, 3000, 2000}; // 物品的价值 int MAX_Weight = 4; // 背包的容量 int
2020-08-09 13:17:39 103
原创 分治算法的应用-汉诺塔问题
1.主要思想 将一个复杂的问题分解为几个小问题,小问题可以直接求解,复杂的问题使用递归求解2.实现思路 - if num = 1,则直接将其放在c柱子上即可 - if num = 2, 则将1号盘子(最上面)放在b柱子,再将2号(最下面)的盘子放在c盘 再将1号盘子放在c盘上 - if num > 2 则将上面n-1个盘子(最上面)放在b柱子,再将1号(最下面)的盘子放在c盘
2020-08-08 10:23:58 152
原创 图的深度优先和广度优先遍历算法
1.说明 图的广度优先算法,需要一个队列来记录节点的访问顺序2.代码实现1.图package Graph;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;public class Graph { private ArrayList<String> VertexList; // 顶点的集合 private int[][] Edges_Relation;
2020-08-08 10:19:37 251
原创 平衡二叉树的相关操作
1.主要功能 平衡二叉树的构造、遍历、节点的删除(有规则)、节点的添加、二叉排序树的平衡化2.代码实现1.节点public class Nodes { public int value; // 节点值 public Nodes left; // 节点的左指针 public Nodes right; // 节点的右指针 public Nodes() { } public Nodes(int value) { this.value
2020-08-08 10:14:05 172
原创 二叉排序树的相关操作
1.主要功能 主要包括二叉排序树的构造、遍历、节点的删除、添加。2.代码实现1.节点public class Nodes { public int value; // 节点值 public Nodes left; // 节点的左指针 public Nodes right; // 节点的右指针 public Nodes() { } public Nodes(int value) { this.value = value; }
2020-08-08 10:11:14 121
原创 赫夫曼编码与解码
代码实现1.节点package HuffmanCode;public class huffmanNodes implements Comparable<huffmanNodes> { private Byte data; // 存数据 比如,a-->97 private int weight; // 数据的权值,这里是字符出现的次数 private huffmanNodes left; // 节点的左指针 private huffmanNodes r
2020-08-08 10:07:56 245
原创 中序线索化二叉树
1.背景 1. 由于二叉树的线索化之后,大部分节点的指针指向发生了变化,所以不能使用普通的遍历方法,而是利用其特性 2. 本程序演示的是中序二叉树的线索化,所以遍历的顺序和二叉树的线索化的顺序一样2.代码实现1.节点public class BinaryTreeNodes { private int id; // 节点id private String name; // 节点名字 private BinaryTreeNodes left; // 节点的左指针
2020-08-08 08:39:33 1077
原创 利用数组实现二叉树的顺序存储
1.说明 主要完成顺序存储二叉树节点的操作2.代码实现1.二叉树public class BinaryTree { private int[] Arr; // 存储数据的数组 // 构造方法 public BinaryTree() { } public BinaryTree(int[] arr) { Arr = arr; } // 外部访问的接口 // 前序遍历的接口 public void preO
2020-08-08 08:36:32 971
原创 利用二叉树实现节点的遍历、查找、删除等操作
1.说明 这里删除某个节点时,不考虑规则,删除以这个节点为跟的整个子树2.代码实现1.节点public class BinaryTreeNodes { private int id; // 节点id private String name; // 节点名字 private BinaryTreeNodes left; // 节点的左指针 private BinaryTreeNodes right; // 节点的右指针 public BinaryTreeNod
2020-08-08 08:33:31 405
原创 使用哈希表实现节点的相关操作
1.哈希表的优势 使用数组和链表实现,数组的每个元素是一个单链表2.代码实现1.数组节点package hashTable;import java.util.HashSet;public class EmployeeArray { private EmployeeLinked[] employeeLinked; // 管理链表的数组 private int size; // 链表的个数(数组长度) // 构造方法 public EmployeeArray
2020-08-08 08:29:17 555 1
原创 使用非递归实现黄金分割(斐波那契)查找算法
1.背景 此算法需要使用到斐波那契数列的性质,mid值为黄金分隔点2.公式 mid = low + f(k - 1) - 13.代码实现package feibonaci;import java.util.Arrays;import java.util.Scanner;/** * @program: 7.查找的相关操作 * @description: 斐波那契查找算法 * @author: Zhou Jian * @create: 2020-07-17 09:19 */
2020-08-08 08:24:07 127
原创 使用递归实现插值查找算法
1.二分查找的问题 查找效率不高,当数据量很大时,查找速度慢2.适用范围 数据均匀分布,且数据量偏大3.改进 主要是对中间值的计算进行改进4.代码实现package insertSearch;import java.util.Arrays;import java.util.Scanner;/** * @program: 7.查找的相关操作 * @description: 主方法 * @author: Zhou Jian * @create: 2020-07-16
2020-08-07 17:43:38 245
原创 使用递归实现二分查找算法(查找多个值的索引)
1.设计思路 当找到第一个满足条件时,向左遍历,找到满足条件的就添加到集合;然后将mid添加;最后向右遍历,找到满足条件的就添加到集合;最后返回这个集合。2.代码实现package binarySearchManyNumber;import java.util.ArrayList;import java.util.Scanner;public class main { public static void main(String[] args) { Scanne
2020-08-07 17:34:08 600
原创 使用递归实现二分查找算法(查找一个值的索引)
1.前提 查找的序列必须是有序的代码实现package binarySearch;import java.util.Scanner;/** * @program: 7.查找的相关操作 * @description: 主方法 * @author: Zhou Jian * @create: 2020-07-16 16:37 */public class main { public static void main(String[] args) { Scanne
2020-08-07 17:32:18 389
原创 使用递归实现八皇后问题
使用递归实现八皇后问题1.问题描述 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。2.思路分析 - 先将第一个皇后放在第一行第一列 - 将第二个皇后放在第二行第一列,判断是否冲突,如果冲突,则放在第三、四......行,直到找到一个不冲突的位置 - 第三个皇后重复上述步骤 - 找到第一个皇后放在第一列的全部解 - 然后再将第一个皇后放在第二、三..... 列3.代码实现1.皇后类package M
2020-08-07 17:15:54 175
原创 利用递归实现迷宫回溯问题
利用递归实现迷宫回溯问题1.问题描述 在一个8*8的矩阵中,四面都是墙,矩阵中有几个点不能通过;假设有一个小球,要到达指定的坐标,求出小球走过的路径。2.图示![在这里插入图片描述](https://img-blog.csdnimg.cn/20200807170617434.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3M
2020-08-07 17:09:30 170
原创 栈的应用-----> 表达式求值(使用数组实现)
栈的应用-----> 表达式求值(使用数组实现)1.设计思路 1. 准备两个栈,一个用于存储数字,一个用于存储符号 2. 设置一个辅助指针,用于遍历表达式(指针初始都指向-1) 3. 遍历表达式 - 1.如果是数字 - [ ] 直接将数字入栈 - 2.如果是符号 - [ ] 如果
2020-08-07 16:59:38 168
原创 使用数组写一个栈
使用数组写一个栈1.功能 利用数组实现栈的基本操作2.代码实现1.栈package ArrayStack;import java.lang.reflect.Array;/** * @program: 栈的相关操作 * @description: 栈 * @author: Zhou Jian * @create: 2020-07-12 20:26 */public class Stack { /** * 成员变量 */ private int
2020-08-07 16:55:01 170
原创 循环单链表实现约瑟夫问题
循环单链表实现约瑟夫问题1.题意 一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 本题实现:输出出队列的顺序的编号2.代码实现1.节点类package Yosepfu;/** * @program: 3.链表的相关操作 * @description: 编号类 * @author: Zhou Jian * @create: 2020
2020-08-07 16:50:36 309
原创 双向链表的相关操作
双向链表的相关操作主要思想 单链表的缺点是:只能顺序遍历,当查找或修改某个节点时,有时候效率会很低,因此,双向链表的出现,解决了这个问题。代码实现1.节点类package DoubleLinkList;/** * @program: 3.链表的相关操作 * @description: 定义节点,一个对象就是一个节点 * @author: Zhou Jian * @create: 2020-07-09 19:56 */// 使用双向链表模拟一个案例:将水浒英雄的名字用双向链表链
2020-08-07 16:42:42 98
原创 单链表的相关操作
单链表的相关操作主要思想 使用单链表作为存储节点的数据结构,有利于节点的修改和删除,由于节点在内存空间的地址不是连续的,而在逻辑上是连续的,所以进行某些操作时,效 率较高。1.节点package SingleLinkList;public class Nodes { // 成员变量 public int id; public String name; public String NickName; // 昵称 public Nodes nex
2020-08-07 16:36:57 104
原创 二维数组和稀疏矩阵的相互转化
package com.hl.zj;/** * @program: 稀疏数组和二维数组的转化 * @description: 将二维数组转化为稀疏数组 * @author: Zhou Jian * @create: 2020-07-08 11:28 */import java.util.ArrayList;/** * 有一个5*5的棋盘,只有两个旗子,使用稀疏数组存储 */public class TwoArrToSparesArr { // 主函数 publi
2020-07-09 19:33:50 679
原创 基于数组的循环队列实现 java
package CircleArrayQueue;import java.util.ArrayList;/** * @program: 队列相关操作 * @description: 数组实现循环队列 * @author: Zhou Jian * @create: 2020-07-09 18:52 */public class CircleArrayQueue { // 成员变量 pr...
2020-07-09 19:29:26 156
原创 基于数组的普通队列 java实现
用数组实现队列的基本操作 package ArrayQueue;import java.util.ArrayList;/** * @program: 队列相关操作 * @description: 用于模拟队列操作的类 * @author: Zhou Jian * @create: 2020-07-08 18:45 */pub...
2020-07-09 19:27:33 118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人