数据结构
文章平均质量分 69
Chrix9
这个作者很懒,什么都没留下…
展开
-
尚硅谷数据结构和算法Java代码导航
类别标题对应视频链接 链表 Java实现静态链表 [点击](https://blog.csdn.net/weixin_44963741/article/details/104496381) Java实现单向单链表 16~20 点击 ...原创 2020-03-31 20:56:57 · 1388 阅读 · 0 评论 -
Java实现迷宫最短路径的BFS算法
利用广度优先遍历算法的特点,由于迷宫每次只能走一格,所以对于任意一个节点,bfs最先到达时一定时最短路径。package recursion;import java.util.ArrayDeque;import java.util.Deque;import java.util.Stack;public class Maze { private class Node{ int x...原创 2020-03-31 17:36:27 · 3746 阅读 · 6 评论 -
Java实现马踏棋盘/骑士周游
尝试了很多方法目前只有这一种能成功。。。package algorithm;import java.awt.Point;import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;public class TravelChessBoard { int[][] chess; int ...原创 2020-03-31 17:30:40 · 212 阅读 · 0 评论 -
Java实现Floyd弗洛伊德算法
参考视频:https://www.bilibili.com/video/BV1Ut41197NX算法思路:逐个顶点试探,找出从顶点Vi到顶点Vj所有可能存在的路径中最短的路径。最后二维数组dis中存放的是任意两个顶点间的最短路径,路径可以通过pre数组求出。package algorithm;import java.util.Arrays;public class Floyd { ...原创 2020-03-31 17:12:25 · 224 阅读 · 0 评论 -
Java实现最短路径算法之Dijkstra迪杰斯特拉算法
有点难理解,参考视频:https://www.bilibili.com/video/BV1mt411i7DX算法思路:将已访问的顶点放入集合s,每次操作找出距离这个集合最近的点k加入集合中,这样可以保证集合s内的点都是确定最短路径的点。然后尝试从起点经过点k到达其他未访问几点的距离,如果比原来dis[k]的距离短,就更新dis[k],这个操作可以保证dis是从起点经过集合s内的顶点到未访问顶点的...原创 2020-03-31 17:05:06 · 405 阅读 · 0 评论 -
Java实现Kruskal克鲁斯卡尔算法
图论中最小生成树算法之一,Kruskal算法从边出发,Prim算法从点出发。算法思路:将图中所有边按权值从小到大排序,选出不构成回路的最短的边,直到将所有点连通,即选择顶点个数减一的边。判断加入边后是否构成回路的方法:判断边的两个顶点的终点是否一致,不一致就不构成回路。package algorithm;import java.util.ArrayList;import java.uti...原创 2020-03-31 16:28:54 · 392 阅读 · 0 评论 -
Java实现Prim普利姆算法
最小生成树算法之一,算法思路:从起点开始,找出已访问节点与未访问节点的权值最短的边,并将新的节点加入已访问节点,循环直到所有节点被访问。package algorithm;import java.util.ArrayList;import java.util.Arrays;class Graph{ ArrayList<String> vertex; int[][] ed...原创 2020-03-31 16:16:21 · 220 阅读 · 0 评论 -
Java贪心算法示例
问题描述:见最少的基站覆盖所有城市,解不一定是最优,但较优。参考视频:https://www.bilibili.com/video/BV1E4411H73v?p=164package algorithm;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.ut...原创 2020-03-31 16:10:36 · 257 阅读 · 0 评论 -
Java实现01背包问题
参考视频:https://www.bilibili.com/video/BV1jt411m7Rcpackage algorithm;import java.util.Arrays;public class Knapsack { /** * 01背包问题 * @param w 物品的重量 * @param v 物品的价值 * @param c 背包的容量 * @re...原创 2020-03-31 16:07:33 · 477 阅读 · 0 评论 -
Java实现图的广度优先遍历和深度优先遍历
首先构造一个图的基本功能:package binarySortTree;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Arrays;import java.util.Stack;public class Graph { ArrayList<String> vertex;...原创 2020-03-27 13:14:04 · 506 阅读 · 0 评论 -
Java实现平衡二叉树AVL
import java.util.Stack;class Node{ int data; Node left; Node right; public Node(int data) { this.data = data; }}public class AVL { Node root; //添加节点 public void add(int value) { this....原创 2020-03-26 09:53:51 · 130 阅读 · 0 评论 -
Java实现二叉排序树
import java.util.Stack;class Node{ int data; Node left; Node right; public Node(int data) { this.data = data; }}public class BinarySortTree { Node root; //添加节点 public void add(int value...原创 2020-03-25 16:45:05 · 133 阅读 · 0 评论 -
Java实现哈夫曼数据压缩
1,根据被压缩的内容生成哈夫曼树。2,根据哈夫曼树生成每个字符对应的哈夫曼编码。3,对原文进行压缩。package tree;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.List;...原创 2020-03-25 08:30:25 · 323 阅读 · 0 评论 -
Java实现前序、中序、后序线索化二叉树及遍历
1.1 前序线索化二叉树public void turnToPre(ThreadedNode temp) { if(temp == null) { return ; } if(temp.left == null) { temp.left = pre; temp.leftType = true; } if(pre != null && pre.right ==...原创 2020-03-19 22:57:27 · 2009 阅读 · 6 评论 -
Java二叉树相关全部代码
package tree;import java.util.ArrayDeque;import java.util.Stack;class Node{ String data; Node left; Node right; public Node(String t) { this.data = t; }}//顺序存储二叉树,完全二叉树class arrayTree{...原创 2020-03-19 22:36:27 · 137 阅读 · 0 评论 -
Java实现顺序存储二叉树及其前序、中序、后序遍历
//顺序存储二叉树,完全二叉树class arrayTree{ Node[] at; //bt为完全二叉树 public arrayTree(BinaryTree bt){ ArrayDeque<Node> quene = new ArrayDeque<Node>(); int count = 0; Node temp = bt.root; quen...原创 2020-03-19 22:34:00 · 305 阅读 · 0 评论 -
Java实现前序、中序、后序、层次查找
1 前序查找//前序遍历查找public Node preSearch(Node temp, String value) { if(temp.data.equals(value)) { return temp; } Node res = null; if(temp.left != null) { res = preSearch(temp.left, value); } if...原创 2020-03-14 16:45:28 · 287 阅读 · 0 评论 -
Java实现二叉树的递归和非递归遍历
1.1 递归前序遍历//递归前序遍历public void preOrderRec(Node temp) { if(temp == null) { System.out.println("BinaryTree is empty."); }else { System.out.print(temp.data + " "); if(temp.left != null) { pr...原创 2020-03-14 00:00:08 · 180 阅读 · 0 评论 -
Java实现哈希表(数组+链表)
public class HashDemo { public static void main(String[] args) { // TODO Auto-generated method stub HashTab ht = new HashTab(7); ht.add(6, "zhangsan"); ht.add(3, "lisi"); ht.add(1, "ww");...原创 2020-03-13 12:50:27 · 549 阅读 · 0 评论 -
Java查找算法汇总
1. 线性查找public static int seqSearch(int[] arr, int value) { for(int i=0; i<arr.length; i++) { if(arr[i] == value) { return i; } } return -1;}2. 折半查找/二分查找/二分查找,要求数组是有序的,这里以从小到大为标准,返回一个...原创 2020-03-12 16:34:09 · 135 阅读 · 0 评论 -
Java排序算法总结
算法时间复杂度最好情况最坏情况空间复杂度排序方式稳定性冒泡排序O(n2)O(n^2)O(n2)O(n)O(n)O(n)O(n2)O(n^2)O(n2)O(1)O(1)O(1)In-place稳定选择排序O(n2)O(n^2)O(n2)O(n2)O(n^2)O(n2)O(n2)O(n^2)O(n2)O(1)O(1)O(1)In-place不...原创 2020-03-09 17:10:36 · 162 阅读 · 0 评论 -
Java实现迷宫回溯
算法还是蛮有意思的,这个算法可以找到通路,但不是最优解。测试结果如下图:代码如下:public class Maze { public void print(int[][] map) { for(int i=0; i<map.length; i++) { for(int j=0; j<map[0].length; j++) { System.out.prin...原创 2020-03-02 20:20:08 · 545 阅读 · 0 评论 -
Java实现八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。首先创建一个一维数组用来皇后拜访的位置,其中...原创 2020-03-02 19:03:35 · 209 阅读 · 0 评论 -
Java用链式存储结构实现队列
//用尾插法实现队列public class LinkQuene { // private class Node{ String data; Node next; public Node(String s) { this.data = s; this.next = null; } } private Node head; private Node rear;...原创 2020-03-01 21:48:18 · 278 阅读 · 0 评论 -
Java用栈实现中缀表达式转逆波兰表达式(后缀表达式)并计算结果
package stack;import java.util.Stack;import java.math.BigDecimal;public class RPN { //优先级比较 public static int priority(String s) { switch(s) { case "(": return 1; //保证"("后的第一个运算符入栈 case ...原创 2020-03-01 19:08:13 · 310 阅读 · 0 评论 -
Java利用栈实现二进制和十进制、八进制、十六进制的互相转换
package stack;import java.util.Stack;public class Sequence { int MAX; int len; int[] data; int top; public Sequence(int m) { this.MAX = m; this.data = new int[m]; this.top = -1; this...原创 2020-02-28 23:19:11 · 2798 阅读 · 0 评论 -
Java实现双向链表
public class TwoWayList<T> { private class Node{ T data; Node next = null; Node prev = null; public Node(T t) { this.data = t; } } private Node head; private int len; publ...原创 2020-02-27 19:34:18 · 161 阅读 · 0 评论 -
Java用循环链表实现魔术师发牌问题和拉丁方阵
public class Test { private class Node{ Node next = null; int data; public Node(int t) { this.data = t; } } private Node head; private int len; public Test() { this.head = new Node(...原创 2020-02-27 16:24:06 · 235 阅读 · 0 评论 -
Java实现静态链表
public class StaticList { //输入字符串创建一个静态链表 int MAX = 20; int[] next = new int[MAX]; char[] data = new char[MAX]; int l; //链表初始化 public StaticList(String str) { this.l = str.length(); char[]...原创 2020-02-25 13:55:31 · 454 阅读 · 0 评论 -
Java实现循环链表,约瑟夫环,判断链表有无环等问题
Java实现静态链表点击进入Java实现单向单链表点击进入一 循环链表首先用Java实现循环链表及其增删改查等操作:public class CircularList<T>{ private class Node{ Node next = null; T data; public Node(T t) { this.data = t; } } pri...原创 2020-02-26 22:58:21 · 206 阅读 · 0 评论 -
Java实现单向单链表
Java实现静态链表点击进入public class SingleList<T> { //头节点,不保存数据 private Node head; private int len; private class Node { Node next = null; T data; public Node(T t) { this.data = t; } } ...原创 2020-02-25 22:01:10 · 172 阅读 · 0 评论