![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
数据结构(四)之单链表查找中间结点
一、查找单链表中间结点1、简单查找 先遍历获取单链表单长度n,然后通过计算得到中间结点为n/2,然后查找下标为n/2的元素。2、优化查找 先设置记录点fast、slow,下标均从0开始,fast走两步,slow走一步,同时遍历两个记录点,直到fast的值为null,slow是中间结点。单链表结点:package cn.edu.scau.mk;/** * * @a原创 2017-11-26 17:56:44 · 441 阅读 · 0 评论 -
漫画:如何用栈实现队列
转载自 漫画:如何用栈实现队列栈的特点是先入后出,出入元素都是在同一端(栈顶):入栈:出栈:队列的特点是先入先出,出入元素是在不同的两端(队头和队尾):入队:出队:既然我们拥有两个栈,那么我们可以让其中一个栈作为队列的入口,负责插入新元素;另一个栈作为队列的出口,负责移除老元素。 队列的主要操作无非有两个:入队和出队。在模...转载 2018-10-27 09:44:57 · 289 阅读 · 0 评论 -
漫画:什么是优先队列
转载自 漫画:什么是优先队列在之前的漫画中,我们介绍了二叉堆和堆排序。没看过的小伙伴可以看一看前文:漫画:什么是二叉堆?(修正版)漫画:什么是堆排序?这一次,我们来讲一讲二叉堆的另外一个应用:优先队列队列的特点是什么? 聪明的小伙伴们都知道,是先进先出(FIFO)。入队列: 出队列:那么,优先队列又是什么样子呢?优先队列不再遵循先入...转载 2018-10-01 23:59:13 · 1039 阅读 · 0 评论 -
漫画:什么是二叉堆?(修正版)
转载自 漫画:什么是二叉堆?(修正版) 什么是二叉堆?二叉堆本质上是一种完全二叉树,它分为两个类型:1.最大堆2.最小堆什么是最大堆呢?最大堆任何一个父节点的值,都大于等于它左右孩子节点的值。 什么是最小堆呢?最小堆任何一个父节点的值,都小于等于它左右孩子节点的值。 二叉堆的根节点叫做堆顶。最大堆和最小堆的特点,决定了在最大...转载 2018-10-01 23:57:53 · 268 阅读 · 0 评论 -
我是一棵“树”
转载自 我是一棵“树” 我是一颗树,之前我们数据结构家族中的一个小朋友——“栈” 已经给你们介绍过的我们这个家族了(我是一个“栈”)。之所以叫栈为小朋友,是因为我和他的爸爸——数组是平辈的。之所以存在我们这样一个家庭,最主要的原因是数组他们家庭虽然很强大,但是有一定的局限性。大家都知道,无论是数组、链表以及他们家的那几个小娃娃(栈、队列)等,存储的数据之间都只有简单的前后顺序关系。...转载 2018-07-24 23:34:29 · 194 阅读 · 0 评论 -
深度优先搜索和广度优先搜索
转载自 深度优先搜索和广度优先搜索图的应用很广泛,也有很多非常有用的算法,当然也有很多待解决的问题,根据性质,图可以分为无向图和有向图。图之所以要研究图,是因为图在生活中应用比较广泛:图是若干个顶点(Vertices)和边(Edges)相互连接组成的。边仅由两个顶点连接,并且没有方向的图称为无向图。 在研究图之前,有一些定义需要明确,下图中表示了图的一些基本属性的含义,这里就不...转载 2018-07-22 12:49:41 · 242 阅读 · 0 评论 -
漫画:什么是B+树
转载自 玻璃猫 程序员小灰这一次我们来介绍 B+ 树。一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m4.所有的叶子结点都位于同一层。5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域...转载 2018-04-13 13:52:49 · 338 阅读 · 0 评论 -
漫画:什么是跳跃表
转载自 玻璃猫 程序员小灰这是发生在很多年以前的故事......几天以前......几天之后......拍卖行的商品总数量有几十万件,对应数据库商品表的几十万条记录。如果是按照商品名称精确查询还好办,可以直接从数据库查出来,最多也就上百条记录。如果是没有商品名称的全量查询怎么办?总不可能把数据库里的所有记录全查出来吧,而且还要支持不同字段的排序。所以,只能提前在内存中存储有序的全量商品集合,每一种...转载 2018-04-13 14:02:27 · 318 阅读 · 0 评论 -
跳跃表(Skip list)原理与java实现
转载自 【算法导论33】跳跃表(Skip list)原理与java实现Skip list是一个用于有序元素序列快速搜索的数据结构,由美国计算机科学家William Pugh发明于1989年。它的效率和红黑树以及 AVL 树不相上下,但实现起来比较容易。作者William Pugh是这样介绍Skip list的: Skip lists are a probabilistic data structu...转载 2018-04-18 21:19:31 · 5560 阅读 · 0 评论 -
跳表SkipList
转载自 跳表SkipList1.聊一聊跳表作者的其人其事2. 言归正传,跳表简介3. 跳表数据存储模型4. 跳表的代码实现分析5. 论文,代码下载及参考资料 . 聊一聊作者的其人其事 跳表是由William Pugh发明。他在 Communications of the ACM June 1990, 33(6) 668-676 发表了Skip转载 2018-04-18 21:17:08 · 170 阅读 · 0 评论 -
漫画:什么是红黑树
转载自 玻璃猫 程序员小灰————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:2.由于10 > 9,因此查看右孩子13:3.由于10 < 13,因此查看左孩子11:4.由于10 <...转载 2018-04-12 19:01:31 · 276 阅读 · 0 评论 -
红黑树详细分析
转载自 coolblog 算法与数据结构“ 一、红黑树简介红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1972年发明,在当时被称为对称二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。红黑树具有良好的效率,它可在 O(logN) ...转载 2018-04-12 14:42:11 · 257 阅读 · 0 评论 -
Android面试题算法之二叉树
转载自 qing的世界 程序员小乐文章目录前言二叉树的递归(深度优先)处理二叉树的层序处理(广度优先)总结“ 一、前言今年可谓是跌宕起伏的一年,幸好结局还算是圆满。开年的时候由于和公司CTO有过节,被"打入冷宫",到下半年开始找工作,过程还是蛮艰辛。先分享一下offer的情况国内的有1.阿里口碑(offer)2.Wish(offer)3.Booking(Offer)4.今日头条(Offer)5...转载 2018-04-12 14:32:13 · 1267 阅读 · 0 评论 -
一篇文章搞定面试中的二叉树
转载自 IOExceptioner 算法与数据结构在上一篇介绍二叉树( Android面试题算法之二叉树 、红黑树详细分析,看了都说好),没看的读者建议先去了解了解,接下来再给大家带来一篇关于二叉树的文章。最近总结了一些数据结构和算法相关的题目,这是第一篇文章,关于二叉树的。先上二叉树的数据结构:class TreeNode{ int val; //转载 2018-04-12 14:22:23 · 322 阅读 · 0 评论 -
漫画:什么是B-树
转载自 玻璃猫 程序员小灰本文提到的「B-树」,就是「B树」,都是 B-tree 的翻译,里面不是减号-,是连接符-。因为有人把 B-tree 翻成 「B-树」,让人以为「B树」和「B-树」是两种树,实际上两者就是同一种树。————————————————————————二叉查找树的结构:第1次磁盘IO:第2次磁盘IO:第3次磁盘IO:第4次磁盘IO:下面来具体介绍一下B-树(Balance Tr...转载 2018-04-13 13:50:33 · 2258 阅读 · 4 评论 -
数据结构(一)之链表
一、链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序原创 2017-11-26 17:56:34 · 305 阅读 · 0 评论 -
数据结构(二)之链表反转
一、链表反转1、反转非递归算法2、反转递归算法链表结点:package cn.edu.scau.mk;/** * * @author MK * @param */public class Node { private T data; private Node next = null; public Node(T data) {原创 2017-11-26 17:56:39 · 421 阅读 · 0 评论 -
数据结构(三)之单链表反向查找
一、反向查找单链表1、简单查找 先遍历获取单链表单长度n,然后通过计算得到倒数第k个元素的下标为n-k,然后查找下标为n-k的元素。2、优化查找 先找到下标为k的元素为记录点p1,然后设置新的记录点p2的下标从0开始,同时遍历两个记录点,直到p1的值为null,p2是倒数第k个元素。单链表结点:package cn.edu.scau.mk;/** * * @au原创 2017-11-26 17:56:42 · 466 阅读 · 0 评论 -
Java 程序员必须掌握的 8 道数据结构面试题,你会几道
转载自 Java 程序员必须掌握的 8 道数据结构面试题,你会几道瑞士计算机科学家Niklaus Wirth在1976年写了一本书,名为《算法+数据结构=编程》。40多年后,这个等式仍被奉为真理。这就是为什么在面试过程中,需要考察软件工程师对数据结构的理解。几乎所有的问题都需要面试者对数据结构有深刻的理解。无论你是初入职场的新兵(刚从大学或者编程培训班毕业),还是拥有几十年经验的职场...转载 2018-10-29 12:45:40 · 322 阅读 · 0 评论