数据结构
辣是真滴牛啤
这个作者很懒,什么都没留下…
展开
-
HashMap 源码分析(JDK1.8)
最近在学习并发容器 ConcurrentHashMap,所以就先从 HashMap 开始了解。前言普及一下后面需要用到的一些知识:HashMap底层是由 数组+链表/红黑树 实现的;这些数组就相当于哈希表;哈希表简单理解:由对象的 hashCode 通过 hash 函数处理得到 hash 值,再处理 hash值 得到数组下标直接存储(时间复杂度为 O(1));HashMap has...原创 2020-02-10 02:17:40 · 327 阅读 · 0 评论 -
SpringBoot校园导航图后台代码实现
一、前言数据结构课设写一个校园导航图,正好舍友会安卓,于是我就用SpringBoot和他合作写了一个前后端交互的项目,由于时间之后3天,所以就没有加一些用户模块、权限模块,也就简单实现了景点信息、路径信息的增删改查。二、所需技术SpringBoot搭建项目的整体框架景点数据、路径数据采用MySQL数据库查询数据添加缓存使用Redis数据库DAO层使用MyBatis框架都是一些基本...原创 2020-01-13 22:20:50 · 694 阅读 · 2 评论 -
七大排序详解(选择、插入、冒泡、希尔、归并、快速、堆)- Java实现
本文图片来自https://www.jianshu.com/p/d243e1aa13ce一张图概述各种常用的排序算法:下列代码都是各种排序的核心代码一、冒泡排序1.1 算法思想每轮都会将剩余序列中最大值或者最小值得出,直到剩余一个数字1.2 动画演示1.3 代码实现 /** * 冒泡排序 * 外层控制轮数:n-1轮 * 内层控制比较次数:n-i-1次 */ ...原创 2019-12-23 20:10:58 · 278 阅读 · 0 评论 -
二叉排序树(Binary Search Tree)- Java实现
图片来自https://blog.csdn.net/isunbin/article/details/81703762一、二叉排序树简介二叉排序树,又叫二叉查找树(BST),它或者是一棵空树;具有以下性质的二叉树:若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;它的左右子树也分别为二叉排序树;二、二叉排序...原创 2019-12-22 16:23:19 · 216 阅读 · 0 评论 -
算法:静态查找表(Static Search Table)(顺序查找、二分查找、插值查找、斐波纳契查找)
转载BinarySearch.java/** * @ClassName BinarySearch * @Description 折半查找 * * 可以使用插值公式将折半查找性能优化 * * 只需将其中的 mid = (low+high) / 2 = low + 1/2*(high-low) * 改为 mid = low + (high-low) * (key-a[low])...原创 2019-12-22 13:04:52 · 250 阅读 · 0 评论 -
图的最小生成树 - Java实现
图片来自:勿在浮沙筑高台http://blog.csdn.net/luoshixian099/article/details/51908175一、前言在了解图的最小生成树之前,先弄清几种图的概念:连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图。强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连通图。连通网:在连...原创 2019-12-22 12:34:35 · 235 阅读 · 0 评论 -
图的深度优先搜索和广度优先搜索(邻接表) - Java实现
文章目录前言1.什么是图?2.图如何表示?3.如何创建一个邻接表一、深度优先搜索(Depth First Search,DFS)二、广度优先搜索前言1.什么是图?图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常称为顶点(vertex),而点到点之间的连线通常称之为边或者弧(edge)。通常记为G=(V,E)。大概张这样:2.图如何表示?图...原创 2019-11-15 22:40:32 · 1798 阅读 · 0 评论 -
哈夫曼编码解压缩文件 - Java实现
文章目录前言一、文件压缩二、文件解压结语前言使用哈夫曼编码压缩文件,其实就是将每个字符的哈夫曼编码得到,每8位转为一个字节存到文件中,解压缩的时候,在将字节转为二进制重新找到哈夫曼编码对应的字符,这样即可完成文件的解压缩。文件解压缩的方法:①将每个字符对应的权值存入压缩文件,在解压时重写构建哈夫曼树,遍历哈夫曼树来获得对应的字符②将每个字符对应的哈夫曼编码以及长度存入压缩文件,在解压时根...原创 2019-11-10 20:37:17 · 746 阅读 · 0 评论 -
哈夫曼树(最优二叉树) - Java实现
简介哈夫曼树(Huffman)树又称最优二叉树,是指对于一组带有确定权值的叶子结点所构造的具有带权路径长度最短的二叉树。从树中一个结点到另一个结点之间的分支构成了两结点之间的路径,路径上的分支个数称为路径长度。二叉树的路径长度是指由根结点到所有叶子结点的路径长度之和。如果二叉树中的叶子结点都有一定的权值,则可将这一概念拓展:设二叉树具有n个带权值的叶子结点,则从根结点到每一个叶子结点的路径长度与...原创 2019-11-06 11:58:55 · 382 阅读 · 1 评论 -
简单二叉树 - Java实现
一、前言因为是简单二叉树的创建,那么就需要自己输入二叉树各个节点的位置,使用先序创建二叉树。如果我想创建上图所示的二叉树,那么输入的顺序为:{“A”, “B”, “D”, “#”, “#”, “E”, “#”, “#”, “C”, “F”, “#”, “#”, “G”, “#”, “#”}二、代码实现BinaryTree.javaimport java.util.ArrayDeque...原创 2019-10-31 18:11:57 · 382 阅读 · 0 评论 -
栈与队列及其应用 - 1.算术表达式求值
使用到了ArrayDeque集合:使用ArrayDeque表示Queue比LinkedList、表示Stack效率更高ArrayDeque使用详解package com.kiger.Demo;import java.util.ArrayDeque;import java.util.Scanner;import java.util.Stack;/** * @ClassName Su...原创 2019-09-26 17:16:20 · 528 阅读 · 0 评论 -
队列链式存储 - Java实现
队列链式存储结构实现package com.kiger.Link;/** * @ClassName LinkQueue * @Description 链式队列实现 * @Author zk_kiger * @Date 2019/6/21 22:13 * @Version 1.0 */public class LinkQueue<T> { private c...原创 2019-06-22 13:54:16 · 200 阅读 · 0 评论 -
队列顺序存储 - Java实现
队列的顺序存储结构package com.kiger.Sequence;import java.util.Arrays;/** * @ClassName SequenceQueue * @Description 顺序队列实现 * @Author zk_kiger * @Date 2019/6/20 22:35 * @Version 1.0 */public class S...原创 2019-06-22 13:53:04 · 235 阅读 · 0 评论 -
图的存储方式以及邻接表数组的实现
一、图的存储方式邻接矩阵和邻接表是存储图的两种不同方式,一般邻接矩阵用于稠密图的存储,而邻接表用于稀疏图的存储假设一个图有n的顶点,m条边:1、当n*n 远大于 m时,就称为稀疏图,采用邻接表可以节省空间,也可以降低时间复杂度2、当n*n 与 m较为接近时,就可以采用邻接矩阵邻接表是完全可以代替邻接矩阵二、实现邻接表一般邻接表都是使用指针链表来实现的,但是在实际应用中较为麻烦,所以采...原创 2019-03-01 10:38:02 · 701 阅读 · 1 评论 -
并查集 (模板)
模板并查集:将不同分散的结点,通过某种关系将他们连接成一个森林并查集分为3步:1、并:给出两点关系,如果属于同一集合,进行merge2、查:在合并时,需要先写出查,即找到该点的祖先点3、集:merge后,将新加入的点的祖先点更新示例已知强盗同伙信息,求存在多少个犯罪团伙Input10 91 23 45 24 62 68 79 71 62 4第一行表示10个强盗...原创 2019-03-03 10:09:54 · 9179 阅读 · 0 评论 -
线性表顺序存储 - Java实现
顺序结构存储实现package com.kiger.Sequence;import java.util.Arrays;/** * @ClassName SequenceList * @Description 线性表顺序存储实现 * @Author zk_kiger * @Date 2019/6/18 20:36 * @Version 1.0 */public class ...原创 2019-06-18 21:43:56 · 277 阅读 · 0 评论 -
线性表(单向)链式存储 - Java实现
单向链式存储实现package com.kiger.Link;/** * @ClassName LinkList * @Description 单向链表实现 * @Author zk_kiger * @Date 2019/6/19 9:36 * @Version 1.0 */public class LinkList<T> { // 定义一个内部类Node...原创 2019-06-19 21:30:55 · 147 阅读 · 0 评论 -
线性表(双向)链式存储 - Java实现
双向链式结构存储实现package com.kiger.DeLink;/** * @ClassName DeLinkList * @Description 双向链表实现 * @Author zk_kiger * @Date 2019/6/19 21:34 * @Version 1.0 */public class DeLinkList<T> { // 定义...原创 2019-06-19 23:01:10 · 129 阅读 · 0 评论 -
栈顺序存储 - Java实现
栈的顺序存储结构实现package com.kiger.Sequence;import java.util.Arrays;/** * @ClassName SequenceStack * @Description 顺序栈实现 * @Author zk_kiger * @Date 2019/6/20 21:16 * @Version 1.0 */public class S...原创 2019-06-22 13:50:28 · 131 阅读 · 0 评论 -
栈链式存储 - Java实现
栈的连式存储结构实现package com.kiger.Link;/** * @ClassName LinkStack * @Description TODO * @Author zk_kiger * @Date 2019/6/20 22:07 * @Version 1.0 */public class LinkStack<T> { private cla...原创 2019-06-22 13:51:51 · 241 阅读 · 0 评论