• 极客文库-知识库上线!
  • 极客文库小编@勤劳的小蚂蚁,为您推荐每日资讯,欢迎关注!
  • 每日更新优质编程文章!
  • 更多功能模块开发中。。。

标签:数据结构

技术杂谈

优先队列实现原理分析

优先队列实现原理分析
优先队列是在实际工程中被广泛应用的一种数据结构,不管是在操作系统的进程调度中,还是在相关的图算法比如 Prim 算法和 Dijkstra 算法中,我们都可以看到优先队列的身影,本文我们就来分析一下优先队列的实现原理。优先队列以操作系统的进程调度为例,比如我们在使用手机的过程中,手机分配给来电的优先级都会比其它程序高,在这个业务场景中,我们……继续阅读 »

勤劳的小蚂蚁 3天前 8浏览 0评论0个赞

技术杂谈

二叉树的非递归遍历

二叉树的非递归遍历
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现……继续阅读 »

勤劳的小蚂蚁 5天前 13浏览 0评论0个赞

技术杂谈

Java 程序员必须掌握的 8 道数据结构面试题,你会几道?

Java 程序员必须掌握的 8 道数据结构面试题,你会几道?
瑞士计算机科学家 Niklaus Wirth 在 1976 年写了一本书,名为《算法+数据结构=编程》。40 多年后,这个等式仍被奉为真理。这就是为什么在面试过程中,需要考察软件工程师对数据结构的理解。几乎所有的问题都需要面试者对数据结构有深刻的理解。无论你是初入职场的新兵(刚从大学或者编程培训班毕业),还是拥有几十年经验的职场老鸟……继续阅读 »

勤劳的小蚂蚁 5天前 15浏览 0评论0个赞

技术杂谈

2-3-4树是如何解决二叉树中非平衡问题的?

2-3-4树是如何解决二叉树中非平衡问题的?
我之前写过一篇文章:下次面试若再被问到二叉树,希望你能对答如流!没错,二叉搜索树是个很好的数据结构,可以快速地找到一个给定关键字的数据项,并且可以快速地插入和删除数据项。但是二叉搜索树有个很麻烦的问题,如果树中插入的是随机数据,则执行效果很好,但如果插入的是有序或者逆序的数据,那么二叉搜索树的执行速度就变得很慢。因为当插入数值有序时,二叉树就……继续阅读 »

勤劳的小蚂蚁 5天前 12浏览 0评论0个赞

技术杂谈

读完这篇,希望你能真正理解什么是哈希表

读完这篇,希望你能真正理解什么是哈希表
哈希表也称为散列表,是根据关键字值(key value)而直接进行访问的数据结构。也就是说,它通过把关键字值映射到一个位置来访问记录,以加快查找的速度。这个映射函数称为哈希函数(也称为散列函数),映射过程称为哈希化,存放记录的数组叫做散列表。比如我们可以用下面的方法将关键字映射成数组的下标:arrayIndex=hugeNumber%arra……继续阅读 »

勤劳的小蚂蚁 5天前 11浏览 0评论0个赞

技术杂谈

一文读懂 AVL 树

一文读懂 AVL 树
背景AVL 树是一棵平衡的二叉查找树,于 1962 年,G. M. Adelson-Velsky 和 E. M. Landis 在他们的论文《An algorithm for the organization of information》中发表。所谓的平衡之意,就是树中任意一个结点下左右两个子树的高度差不超过 1。(本文对于树的高度约……继续阅读 »

勤劳的小蚂蚁 5天前 9浏览 0评论0个赞

技术杂谈

动态图展示常用数据结构的特点和基本操作

动态图展示常用数据结构的特点和基本操作
最近在整理数据结构方面的知识,系统化看了下 Java 中常用数据结构,突发奇想用动画来绘制数据流转过程。主要基于 jdk8,可能会有些特性与 jdk7 之前不相同,例如 LinkedList LinkedHashMap 中的双向列表不再是回环的。HashMap 中的单链表是尾插,而不是头插入等等,后文不再赘叙这些差异,本文目录结构如下:……继续阅读 »

勤劳的小蚂蚁 5天前 8浏览 0评论0个赞

技术杂谈

堆其实是个很简单的数据结构

堆其实是个很简单的数据结构
说到堆这种数据结构,很多人的第一反应是感觉很复杂,其实不然,堆就是个优先级队列而已,或者,堆其实就是一种树。本文先讲原理,后面给出堆的实现代码。优先级队列可以用有序数组来实现,这种做法的问题是,尽管删除最大数据项的时间复杂度为 O(1),但是插入还是需要较长的 O(N)时间,这是因为必须移动数组中平均一半的数据项以插入新数据项,并在完成插入后……继续阅读 »

勤劳的小蚂蚁 5天前 14浏览 0评论0个赞

技术杂谈

初学者应该了解的数据结构:Array、HashMap 与 List

初学者应该了解的数据结构:Array、HashMap 与 List
当开发程序时,我们(通常)需要在内存中存储数据。根据操作数据方式的不同,可能会选择不同的数据结构。有很多常用的数据结构,如:Array、Map、Set、List、Tree、Graph 等等。(然而)为程序选取合适的数据结构可能并不容易。因此,希望这篇文章能帮助你了解(不同数据结构的)表现,以求在工作中合理地使用它们。本文主要聚焦于线性的数据结构……继续阅读 »

勤劳的小蚂蚁 5天前 12浏览 0评论0个赞

技术杂谈

可以管理时间的二叉堆

可以管理时间的二叉堆
面试官:写一个堆排吧我心想:堆排是什么鬼理解堆排,首先要理解二叉堆。理解了二叉堆的“下沉”操作,基本上就可以理解堆排了。今天我们来看一看什么是堆,以及堆的一般操作优先级队列近日,谦子遇到了烦心事,于是找老师去诉苦了老师,最近好烦啊……继续阅读 »

勤劳的小蚂蚁 5天前 18浏览 0评论0个赞

技术杂谈

堆和堆的应用:堆排序和优先队列

堆和堆的应用:堆排序和优先队列
1.堆堆(Heap))是一种重要的数据结构,是实现优先队列(Priority Queues)首选的数据结构。由于堆有很多种变体,包括二项式堆、斐波那契堆等,但是这里只考虑最常见的就是二叉堆(以下简称堆)。堆是一棵满足一定性质的二叉树,具体的讲堆具有如下性质:父节点的键值总是不大于它的孩子节点的键值(小顶堆), 堆可以分为小顶堆和大顶堆,这里以小……继续阅读 »

勤劳的小蚂蚁 6天前 22浏览 0评论0个赞

技术杂谈

单链表有环问题

单链表有环问题
小咖是某某计算机专业的学生。linglingling,伴随这铃声,同学们都准时来上课了。老师:这节课是计算机课,我们学习了单链表,请同学说一下什么是单链表。同学们纷纷举起了手。好,小白你来说。小白:单链表是一种线性表,它的存储单元可以不是连续的,从头节点开始,每个节点都有一个指针,指向下一个节点,最后一个节点指向 null,头节点不被……继续阅读 »

勤劳的小蚂蚁 6天前 15浏览 0评论0个赞

技术杂谈

二叉查找树实现原理分析

二叉查找树实现原理分析
引言二叉查找树是一种能将链表插入的灵活性和有序数组查找的高效性结合起来的一种重要的数据结构,它是我们后面学习红黑树和 AVL 树的基础,本文我们就先来看一下二叉查找树的实现原理。二叉查找树的定义二叉查找树最重要的一个特征就是:每个结点都含有一个 Comparable 的键及其相关联的值,该结点的键要大于左子树中所有结点的键,而小于右子……继续阅读 »

勤劳的小蚂蚁 6天前 17浏览 0评论0个赞

技术杂谈

史上最清晰的红黑树讲解(下)

史上最清晰的红黑树讲解(下)
上一篇文章史上最清晰的红黑树讲解(上)对 Java TreeMap 的插入以及插入之后的调整过程给出了详述。本文接着以 Java TreeMap 为例,从源码层面讲解红黑树的删除,以及删除之后的调整过程。如果还没有看过上一篇文章,请在阅读本文之前大致浏览一下前文,以方便理解。寻找节点后继对于一棵二叉查找树,给定节点 t,其后继(树种比……继续阅读 »

勤劳的小蚂蚁 6天前 9浏览 0评论0个赞

技术杂谈

数据结构之Heap (Java)

数据结构之Heap (Java)
Heap 简介Heap 译为“堆”,是一种特殊的树形数据结构,它满足所有堆的特性:父节点的值大于等于子节点的值(max heap),或者小于等于子节点的值(min heap)。对于 max heap 根节点的值为整个树最大值,反之亦然,min heap 根节点的值为整个树最小值。本文采用 Java 编程语言简单实现 min heap。Java……继续阅读 »

勤劳的小蚂蚁 6天前 12浏览 0评论0个赞

技术杂谈

下次面试若再被问到二叉树,希望你能对答如流!

下次面试若再被问到二叉树,希望你能对答如流!
曾经有个朋友问我:二叉树可以用来干啥况?我回答他:可以搜索、可以排序呀?可是,排序有快速排序,归并排序,查找有二分法,甚至直接遍历查找,我干啥要使用二叉树呢?……这位朋友说的是有道理的,二叉树确实在实际中用的比较少,因为有更高级的树,但是二叉树作为一种最基本最典型的排序树,是研究其他树的基础。除此之外,在面试数据结构的时候,二叉……继续阅读 »

勤劳的小蚂蚁 6天前 16浏览 0评论0个赞

技术杂谈

什么是B-Tree

什么是B-Tree
B-Tree 就是我们常说的 B 树,一定不要读成 B 减树,否则就很丢人了。B 树这种数据结构常常用于实现数据库索引,因为它的查找效率比较高。磁盘 IO 与预读磁盘读取依靠的是机械运动,分为寻道时间、旋转延迟、传输时间三个部分,这三个部分耗时相加就是一次磁盘 IO 的时间,大概 9ms 左右。这个成本是访问内存的十万倍左右;正是由于磁盘……继续阅读 »

勤劳的小蚂蚁 6天前 11浏览 0评论0个赞

技术杂谈

什么是B+Tree

什么是B+Tree
B+Tree 的定义B+Tree 是B 树的变种,有着比B 树更高的查询性能,来看下 m 阶 B+Tree 特征:有 m 个子树的节点包含有 m 个元素(B-Tree 中是 m-1)根节点和分支节点中不保存数据,只用于索引,所有数据都保存在叶子节点中。所有分支节点和根节点都同时存在于子节点中,在子节点元素中是最大或者最小的元……继续阅读 »

勤劳的小蚂蚁 6天前 11浏览 0评论0个赞

技术杂谈

数据结构之链表

数据结构之链表
在面试过程中,数据结构和算法基本上算是研发类岗位必考的部分,而链表基本上又是数据结构中相对容易掌握、而且容易出题的部分,因此我们先整理一下链表部分的经典题目。声明:以下所有程序都是用 java 编写。首先,我们来定义一个链表的数据结构,如下:publicclassLink {   privateintvalue;   priv……继续阅读 »

勤劳的小蚂蚁 6天前 14浏览 0评论0个赞

技术杂谈

通俗易懂的Redis数据结构基础教程

通俗易懂的Redis数据结构基础教程
最近看了一下老钱的 redis 文章,的确很通俗易懂,人也非常 nice,本文是系列文章中的一章,有需要深入学习 redis 的同学可以扫描下边二维码来继续阅读其他文章:Redis 有 5 个基本数据结构,string、list、hash、set 和 zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这 5 个数据结构都吃透了……继续阅读 »

勤劳的小蚂蚁 6天前 17浏览 0评论0个赞

技术杂谈

【动态图】教你捋清Java常用数据结构及其设计原理

【动态图】教你捋清Java常用数据结构及其设计原理
最近在整理数据结构方面的知识, 系统化看了下 Java 中常用数据结构, 突发奇想用动画来绘制数据流转过程。主要基于 jdk8, 可能会有些特性与 jdk7 之前不相同, 例如 LinkedList LinkedHashMap 中的双向列表不再是回环的。HashMap 中的单链表是尾插, 而不是头插入等等, 后文不再赘叙这些差异, 本文目录结……继续阅读 »

勤劳的小蚂蚁 2周前 (01-06) 12浏览 0评论0个赞

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ

247507792

工作时间:09:00-23:00

新浪微博:点我访问

个人博客:点我访问