数据结构与算法
学习来源: 学习的尚硅谷的
离别又见离别
只要继续走,总会到达自己的目的地
展开
-
常用的10中算法
二分查找[ 非递归 ]/** * 二分查找非递归实现 * * @author qb * @version 1.0 * @since 2022/3/7 11:30 */public class BinarySearchNoRecur { public static void main(String[] args) { int[] arr = {1,3,8,10,11,67,100}; int i = binarySearch(arr, 100);原创 2022-03-17 13:35:15 · 462 阅读 · 0 评论 -
算法之查找算法
线性查找/** * 线性查找 * * @author qb * @version 1.0 * @since 2022/2/24 15:57 */public class SeqSearch { public static void main(String[] args) { int[] arr = {1,9,11,-1,34,89}; int result = seqSearch(arr, 88); System.out.pri.原创 2022-03-17 13:35:01 · 110 阅读 · 0 评论 -
排序算法之8种排序
排序算法8种排序内部排序:插入排序:直接插入排序、希尔排序选择排序:简单选择排序、堆排序交换排序:冒泡排序、快速排序归并排序基数排序外部排序:冒泡排序/** * 冒泡排序 * @author qb * @version 1.0 * @since 2022/2/23 13:55 */public class BubbleSort { public static void main(String[] args) { int[] array原创 2022-03-17 13:34:26 · 600 阅读 · 0 评论 -
非线性数据结构之图
图的深度优化遍历package com.example.dataalgorithm.grap;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * 图 * @author qb * @version 1.0 * @date 2022/3/6 15:28 */public class Graph { /** * 存储顶点集合 */ pri...原创 2022-03-17 13:34:11 · 128 阅读 · 0 评论 -
非线性数据结构之平衡二叉树(AVL)
左旋、右旋、双旋package com.example.dataalgorithm.tree.avl;/** * @author qb * @version 1.0 * @date 2022/3/5 15:06 */public class AvlTreeDemo { public static void main(String[] args) {// int[] arr ={4,3,6,5,7,8}; //左旋转// int[] arr ={...原创 2022-03-17 13:33:37 · 150 阅读 · 0 评论 -
非线性数据结构之二叉排序树【 BST 】
package com.example.dataalgorithm.tree.binarySortTree;/** * 二叉排序树 * * @author qb * @version 1.0 * @since 2022/3/4 17:11 */public class BinarySortTreeDome { public static void main(String[] args) { int[] arr = {7,3,10,12,5,1,9,2}; ..原创 2022-03-17 13:33:09 · 61 阅读 · 0 评论 -
赫夫曼编码[ 无损压缩 ]
赫夫曼编码及解码package com.example.dataalgorithm.tree;import org.jetbrains.annotations.NotNull;import java.util.*;/** * 哈夫曼编码 * * @author qb * @version 1.0 * @since 2022/3/3 14:50 */public class huffmanCode { public static void main(String[] a.原创 2022-03-16 16:01:00 · 308 阅读 · 0 评论 -
非线性数据结构之赫夫曼树
基本介绍特点{13,7,8,3,29,6,1} 的赫夫曼树为:案例package com.example.dataalgorithm.tree.huggmantree;import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * 哈夫曼树 * * @author qb * @version 1.0 * @since 2022/3/3 10:50 */public原创 2022-03-16 15:58:57 · 378 阅读 · 0 评论 -
非线性数据结构之顺序储存二叉树及线索化二叉树
顺序储存二叉树特点顺序二叉树通常只考虑完全二叉树第n个元素的左节点为 2 * n + 1第n个元素的右节点为 2 * n + 2第n个元素的父节点为 (n-1) /2案例package com.example.dataalgorithm.tree;/** * @author qb * @version 1.0 * @since 2022/3/2 14:42 */public class ArrBinaryTreeDemo { public static void m原创 2022-03-16 15:55:50 · 498 阅读 · 0 评论 -
非线性数据结构之二叉树
为什么需要这种数据结构数组存储方式的分析优点:通过下标的方式访问元素,速度快,对于有序数组,还可以使用二分查找提高检索速度缺点:如果要检索的具体某个值,或者插入值(按一定顺序)会整体移动,效率较低链式存储方式分析优点:在一定程度上对数组存储方式有优化 比如插入一个数值节点,只需要将插入的节点,链接到链表中节课,删除效率也很好缺点:在进行检索时,效率仍然较低,比如检索某个值,需要从头节点开始遍历前序、中序、后序遍历package com.example.dataalgor原创 2022-03-16 15:52:37 · 911 阅读 · 0 评论 -
线性数据结构之递归
简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁递归场景实例/** * 迷宫 * * @author qb * @version 1.0 * @since 2022/2/22 15:50 */public class MiGong { public static void main(String[] args) { //先创建一个二维数组 模拟迷宫 //地图原创 2022-03-16 15:49:47 · 229 阅读 · 0 评论 -
线性数据结构之哈希表
散列表(hash table,也叫哈希表),是根据关键码值(key value)而直接进行访问的数据结构,也就是说,他通过关键码值映射到表中一个位置来访问记录,一加快查找速度,这个映射函数叫做散列函数,存放记录的数组叫做散列表package com.example.dataalgorithm.recursion;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import原创 2022-03-16 15:47:49 · 271 阅读 · 0 评论 -
线性数据结构之栈
子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后在将地址去除,以回到原来的程序中处理递归调用: 和子程序的调用类似,只是出了存储下一个指令的地址外,也将参数,区域变量的数据存入堆栈中表达式的转换[ 中缀表达式转后缀表达式 ] 与求值(实际解决)二叉树的遍历图形的深度优化(depth - first)数组模拟栈package com.example.dataSructure.stack;import java.util.Scanner;/** * .原创 2022-03-16 15:46:33 · 621 阅读 · 0 评论 -
二、数据结构介绍及线性数据结构之链表
单项链表package com.example.dataSructure;import lombok.Data;/** * @author qubing * @Description: * @date 2022/2/14 13:44 */public class SingleLinkedListTest { public static void main(String[] args) { HeroNode heroNode1 = new HeroNode(1,原创 2022-03-16 15:41:45 · 717 阅读 · 0 评论 -
二、线性数据结构之稀疏(sparsearray)数组
概述当数组中大部分元素为0,或者为用一个值的数组时,可以使用洗漱数组来保存该数组。稀疏数组的处理方法:记录数组一共几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模案例转换方式package com.example.dataSructure;import lombok.extern.slf4j.Slf4j;/** * 稀疏数组 ---五子棋 * @author qubing * @date 2022/2/14 10:44原创 2022-03-16 15:39:03 · 119 阅读 · 0 评论
分享