数据结构
萌茶๑
这个作者很懒,什么都没留下…
展开
-
快速排序(实测8万数据无错)
快速排序package com.atguigu.Sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * 快速排序 * * 排列80000个数据的时间为8毫秒 */public class QuickSort { public static void main(String[] args) { //待排序的一维数组arr原创 2021-11-04 21:54:39 · 215 阅读 · 1 评论 -
回溯算法
一、暴力穷举法给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]比如此处需要将所有的情况都列举出来代码package middle.solution46;import java.util.Arrays;import java.util.LinkedList;import java.util.L原创 2021-10-24 23:11:07 · 78 阅读 · 0 评论 -
差值查找(二分查找plus)
差值查找和二分查找的区别所在二分查找:顾名思义每一次都是取得了数据的一半进行查找,在数据分布的相对比较均匀的时候,二分查找的效率还是很不错的。 比如说这个数组:{1, 2,3 , 4 ,5 , 6 ,7 , 8 ,9 , 10}查找里面的任意一个数组最多也就只会花费3次的分组但是如果这个数组的分配是极其不均匀的,比如以下数组 {1 , 1 ,1 , 1 ,1 , 1 ,1 , 1 ,1 , 1 ,9}我们希望能够以更少的次数就可以找到这个数据9(当然二分查找是完全没有问题的),此时就是差值原创 2021-10-22 20:55:04 · 167 阅读 · 0 评论 -
最小生成树的两种方法
法一代码package kruskal;import java.util.Arrays;/** * 解决最小生成树的另一种方法 */public class KruskalDemo { public static void main(String[] args) { char[] datas = new char[]{'A','B','C','D','E','F','G'}; int verxs = datas.length; int原创 2021-10-24 00:00:00 · 252 阅读 · 0 评论 -
kmp字符串的匹配算法
package kmpDemo;import java.util.Arrays;/** * kmp算法,查看字符串str1中是否存在字符串str2,若存在,返回第一次出现的第一个字符的下标 */public class Kmp { public static void main(String[] args) { String str1 = "mississippi"; String str2 = "issip"; int voer = k原创 2021-10-17 16:53:02 · 47 阅读 · 0 评论 -
二叉树的前中后序遍历java实现
package com.atguigu.Tree;/** * 二叉树的前中后序遍历 * * * 1、宋江 * · · * · · * 2、吴用 3、卢俊义 * · *原创 2021-10-17 16:51:59 · 39 阅读 · 0 评论 -
差值查找(二分查找的高级版)
package com.atguigu.Search;import java.util.Arrays;/** * 差值查找 */public class InsertValSearch { public static void main(String[] args) { int[] arr = new int[100]; for (int i = 0; i < arr.length; i++) { arr[i] = i +原创 2021-10-17 16:50:23 · 78 阅读 · 0 评论 -
二叉树的存储与遍历java实现
package com.atguigu.binaryTree;import java.util.Objects;/** * 二叉树的存储与遍历 */public class BinaryTree { public static void main(String[] args) { int[] arr = {7,3,10,12,5,1,9,2}; BinaryTreeTest tree = new BinaryTreeTest(); for原创 2021-10-17 16:47:36 · 48 阅读 · 0 评论 -
avTree树java实现
主要实现思路为左旋转和右旋转代码package com.atguigu.avlTreeDemo;import java.util.Objects;/** * avl树:平衡二叉树 */public class AvlTreeDemo { public static void main(String[] args) { //左旋转测试开始 /* int[] arr = {4,3,6,5,7,8}; AvlTree avlTree =原创 2021-10-17 16:45:46 · 259 阅读 · 0 评论 -
huffman编码Java实现
实现思路huffmantree的创建、压缩和解压创建思路1、写一个方法得到对应的String的Byte数组2、创建一个Node节点:属性:data(每个数据的asc码) weight(数据出现的次数) left right继承Comparable方法:toString(重写toString) preOrder(前序遍历) comparableto(比较大小的方法)3、方法:将Byte数组转化为map集合(key存储数据,value存储出现的次数)4、将map集合转化为list5、对li原创 2021-10-17 16:43:43 · 219 阅读 · 0 评论 -
插入排序java实现
排序80000时间约为2秒时间复杂度n^2package com.atguigu.Sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * * 插入排序 * * 排序80000个数据的时间为2秒 */public class InsertSort { public static void main(String[] args) { i原创 2021-10-17 11:31:42 · 41 阅读 · 0 评论 -
冒泡排序java实现
时间复杂度O(n^2)排序800000数据的时间为12秒左右代码package com.atguigu.Sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/** * * 冒泡排序 * * 对一维数组 3,1,8,-2,9,-5 进行排序 * 冒泡排序的时间复杂度为n*n * 排序八万个数据使用时间为12秒左右 */public class Bubble原创 2021-10-17 11:28:51 · 60 阅读 · 0 评论 -
逆波兰表达式计算机的实现
逆波兰表达器的实现逆波兰表达式(后缀表达式)逆波兰表达式(后缀表达式)后缀表达式:平时使用的是中缀表达式举例说明:(1 + 4) * 4 - 6 完成任务如下:任务一:将一个中缀表达式转换为一个后缀表达式举例说明:1+((2+3)4)-5转换为 集合ArrayList[1,2,3,+,4,,+,5,-]计算结果为:16实现思路:第一步:将字符串1+((2+3)4)-5转换为一个ArrayList[1,+,(, (,2,+,3,),,4,),-,5]第二步:将集合中的中缀表达式原创 2021-07-05 14:45:34 · 88 阅读 · 0 评论 -
数组与稀疏数组之间的转换算法实现 java
数组与稀疏数组之间的转换算法实现 java主要方法方法主要包括:二维数组转换到稀疏数组稀疏数组转换到二维数组将数组写入到文件中将文件中的数据读取出来代码`package com.atguigu.sparsearray;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/**原创 2021-06-08 21:14:59 · 58 阅读 · 0 评论