![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
剑在手,跟我狗
这个作者很懒,什么都没留下…
展开
-
java复习之顺序二叉树的实现
java复习之顺序二叉树的实现package learn.tree;import java.util.Enumeration;/** * 顺序存储二叉树 */public class ArrayTree { public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7,8}; ArrayT arrayT = new ArrayT(array); arrayT原创 2020-08-05 16:47:48 · 168 阅读 · 1 评论 -
java复习之二叉树前序,中序,后续遍历
二叉树前序,中序,后续遍历package learn.tree;import sun.reflect.generics.tree.Tree;public class TreeDemo { public static void main(String[] args) { Tree1 tree1 = new Tree1(); TreeNode treeNode1 = new TreeNode(1,"李1"); TreeNode treeNode2原创 2020-06-07 21:47:44 · 161 阅读 · 0 评论 -
java复习之hash表的实现
散列表的实现java版package learn;import java.util.Arrays;public class HashTab { public static void main(String[] args) { HashT hashT = new HashT(8); hashT.add(new Emp(12,"张三")); hashT.add(new Emp(7,"李四")); hashT.add(new Emp原创 2020-06-07 20:49:37 · 136 阅读 · 0 评论 -
java复习值插值查找
插值查找package learn;/** * 插值查找,二分查找的升级 * num是要查找的值 * mid=left+(right-left)*(num-array[left])/(array[right]-array[left]) */public class InsertSearcj { public static int binarySearch(int[] array,int left,int right,int num){ if(left>right|原创 2020-06-06 20:54:35 · 114 阅读 · 0 评论 -
java复习之二分查找
java复习之二分查找package learn;public class BinarySearch { public static int binarySearch(int[] array,int left,int right,int num){ if(left>right){ return -1; } int mid=(left+right)/2; if(num>array[mid]){原创 2020-06-06 20:26:02 · 101 阅读 · 0 评论 -
java复习之归并排序的实现
java复习之归并排序的实现package learn;import java.util.Arrays;/** * 归并排序,合并次数为num-1 */public class GBSort { public static void dis(int[] array,int left,int right,int[] temp){ if(left<right){ int mid=(left+right)/2; dis(原创 2020-06-06 17:13:34 · 86 阅读 · 0 评论 -
基数排序的代码实现
基数排序的代码实现package learn;import java.util.Arrays;/** * 基数排序 */public class GSort { public static void sort(int[] arr){ int max=arr[0]; for(int i=1;i<arr.length;i++){ if(arr[i]>max){ max=arr[i];原创 2020-06-06 15:40:01 · 188 阅读 · 0 评论 -
java复习之快速排序的2种实现方法
java复习之快速排序的2种实现方法第一种,使用两个指针的方法package learn;import java.util.Arrays;/** * 快速排序 */public class QuickSort { public static void sort(int[] array,int left,int right){ int i=left; int j=right; int start=array[left];原创 2020-06-05 16:32:32 · 135 阅读 · 0 评论 -
java复习之插入排序
java复习之插入排序package learn;import java.util.Arrays;/** * 插入排序 */public class InsertSort { public static void sort(int[] array){ for(int i=1;i<array.length;i++){ int temp=array[i]; int index=i-1;//当前元素前一个元素原创 2020-06-03 21:58:12 · 115 阅读 · 0 评论 -
java复习之选择排序
java复习之选择排序package learn;import java.util.Arrays;/** * 选择排序,每次选最小的 */public class selectSort { public static void select(int[] array){ for(int i=0;i<array.length-1;i++){ int min=array[i]; int index=i;原创 2020-06-03 21:30:26 · 92 阅读 · 0 评论 -
java复习之冒泡排序
java复习之冒泡排序未优化情况下的写法package learn;import java.util.Arrays;/** * 冒泡排序,把最大的泡依次冒出去o.o */public class MaoPaoSort { public static void sort(int[] array){ boolean flag=false; for(int i=array.length-1;i>=0;i--){ int te原创 2020-06-02 23:11:14 · 109 阅读 · 0 评论 -
java复习之递归+八皇后问题(二)
java复习之递归+八皇后问题(二)在8x8棋盘上,放皇后,任意两个皇后不能处于同一行,同一列,同一斜线,问多少方法?第一个先放第一排第一列,第二个放第二行第一列,进行判断,不符合就向后走,直到找到合适的,继续第三个,直到第八个,这算找到一个正确的解,然后继续向后看其他位置行不行,不行就回溯到上一行,再看其他位置行不行,直到,回到第一行,继续向后走,执行上述步骤。简化一点,可以只使用一个数组来做,用数组index作为行号,上代码package learn;public class Queu原创 2020-06-02 21:43:19 · 115 阅读 · 0 评论 -
java复习之递归篇+迷宫回溯问题(一)
java复习之递归篇递归的规则:执行一个方法的时候,创建一个新的受保护的栈空间方法的局部变量是独立德 ,不会相互影响(引用类型的会被共享)递归必须向退出递归的条件逼近,否则就是无限递归当一个方法执行完,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁 ,当方法执行完毕或者返回时,该方法也就执行完毕了先上第一个例题,迷宫寻路,用回溯法package learn;/** * 迷宫小球寻路问题 */public class MiGong { /** *原创 2020-06-02 11:40:29 · 149 阅读 · 0 评论 -
对逆波兰表达式进行计算
直接上代码package learn;import java.util.ArrayList;import java.util.List;import java.util.Stack;public class BoLan { public static List<String> getList(String ex){ List<String> list = new ArrayList<>(); String[] stri原创 2020-06-01 20:20:31 · 107 阅读 · 0 评论 -
java复习之栈+栈实现计算器
java复习之栈栈的代码实现package learn;public class MyStack { public static void main(String[] args) { ArrayStack arrayStack = new ArrayStack(10); arrayStack.push(1); arrayStack.push(4); arrayStack.push(2); arrayStack.p原创 2020-06-01 16:43:11 · 231 阅读 · 0 评论 -
约瑟夫问题的解决(单项环形链表)
约瑟夫问题的解决问题概述有n个人,编号为1~n,从k个人开始报数,从1开始报,报到m的人会死掉,然后从第m+1个人开始,重复以上过程。在死了n-1个人后,问最后一个人的编号是?package learn;/** * 单向环形列表 * 直接使用前边定义的链表和节点了, */public class CircleLinkList { public static void domethod(int num,int k,int m){ if(k>num){原创 2020-06-01 14:43:55 · 207 阅读 · 0 评论 -
java复习之双向链表
package learn;public class DoubleLinkList { DNode head; DNode temp; public DoubleLinkList(DNode head) { this.head = head; } public DoubleLinkList() { head = new DNode(); } public void addByOrder(DNode dNode)原创 2020-05-30 21:13:51 · 151 阅读 · 0 评论 -
java复习之单链表倒着打印
java复习之单链表倒着打印第一种方法,就是我上一篇讲的,将链表反转之后打印,但是这样会破坏链表的结构,再让你倒着打一遍,还得反转,所以还有以下三种思路使用栈 //利用栈进行单链表的倒叙打印 public static void reserPrint(Node head){ if(head.next==null){ System.out.println("这就是个头!!!"); return; }原创 2020-05-29 23:49:28 · 149 阅读 · 0 评论 -
java复习之单链表的反转
java复习之单链表的反转 public static void reversetList(Node head){ if(head.next==null||head.next.next==null){ System.out.println("只有一个啊"); return; } System.out.println("================="); Node reserset=原创 2020-05-29 22:17:39 · 108 阅读 · 0 评论 -
java复习之链表1(单链表)
java复习之链表主要复习单链表,多链表,双向链表及相关操作单链表这里出了点小问题,用框架多了,脑子瓦特了,break和return 混了,return强制结束当前的方法,不论在多少层嵌套中,break结束当前的循环(while也是个循环啊,qaq,基础代码不写手生了啊!)package learn;public class LinkedList { public static void main(String[] args) { Node node1= new Node原创 2020-05-29 21:19:42 · 97 阅读 · 0 评论 -
java数据结构复习之循环队列
java数据结构复习之循环队列package learn;/** *使用的是循环队列,这个取元素之后,队列能够复用。 */public class Queue { public static void main(String[] args) { ArrayQueue queue = new ArrayQueue(10); queue.addQueue(2); queue.addQueue(3); queue.addQueue原创 2020-05-29 15:14:26 · 134 阅读 · 0 评论 -
稀疏数组与普通二维数组的转换
稀疏数组与普通二维数组的转换今天开始更新数据结构与算法这是数据结构的第一篇大神可以无视,小白可以凑合看看,为了给小白看的清楚,里面加了每一步的演示,复制到ide中即可运行。package learn;/** * @author yuyi * 稀疏数组的代码实现 * 第一行记录原数组几行几列,多少个有效值 * 接下来是所在行列的位置以及值的内容 * 稀疏数组的开始也是从零开始 */public class Sparsearray { /** * 二维数组转换稀疏数组原创 2020-05-27 23:11:10 · 124 阅读 · 0 评论