数据结构
文章平均质量分 94
无心六神通
金融科技系统架构师
展开
-
数据结构-布隆过滤器
首先,我们需要了解布隆过滤器的概念。布隆过滤器(Bloom Filter)是一个叫做 Bloom 的老哥于 1970 年提出的。我们可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的的 List、Map 、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。原创 2024-02-08 02:59:09 · 846 阅读 · 0 评论 -
数据结构-红黑树
简单来说红黑树就是为了解决二叉查找树的缺陷,因为二叉查找树在某些情况下会退化成一个线性结构。:TreeMap、TreeSet以及JDK1.8的HashMap底层都用到了红黑树。(也介绍到了二叉查找树,非常推荐)(美团点评技术团队)原创 2024-02-08 02:58:09 · 455 阅读 · 0 评论 -
数据结构-树
树就是一种类似现实生活中的树的数据结构(倒置的树)。任何一颗非空树只有一个根节点。下图就是一颗树,并且是一颗二叉树。。原创 2024-02-08 02:57:16 · 782 阅读 · 0 评论 -
数据结构-堆
堆是一种满足以下条件的树:堆中的每一个节点值都大于等于(或小于等于)子树中所有节点的值。或者说,任意一个节点的值都大于等于(或小于等于)所有子节点的值。大家可以把堆(最大堆)理解为一个公司,这个公司很公平,谁能力强谁就当老大,不存在弱的人当老大,老大手底下的人一定不会比他强。这样有助于理解后续堆的操作。!!!很多博客说堆是完全二叉树,其实并非如此,堆不一定是完全二叉树,只是为了方便存储和索引,我们通常用完全二叉树的形式来表示堆,事实上,广为人知的斐波那契堆和二项堆就不是完全二叉树,它们甚至都不是二叉树。原创 2024-02-08 02:55:31 · 826 阅读 · 0 评论 -
数据结构-图
图是一种较为复杂的非线性结构。但是,图形结构的元素之间的关系是任意的。简单来说,图就是由顶点的有穷非空集合和顶点之间的边组成的集合。,其中,G表示一个图,V表示顶点的集合,E表示边的集合。下图所展示的就是图这种数据结构,并且还是一张有向图。图在我们日常生活中的例子很多!比如我们在社交软件上好友关系就可以用图来表示。原创 2024-02-08 02:51:20 · 828 阅读 · 0 评论 -
数据结构-线性数据结构-数组-链表-栈-队列
链表(LinkedList)虽然是一种线性表,但是并不会按线性的顺序存储数据,使用的不是连续的内存空间来存储数据。链表的插入和删除操作的复杂度为 O(1) ,只需要知道目标位置元素的上一个元素即可。但是,在查找一个节点或者访问特定位置的节点的时候复杂度为 O(n)。使用链表结构可以克服数组需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但链表不会节省空间,相比于数组会占用更多的空间,因为链表中每个节点存放的还有指向其他节点的指针。原创 2024-02-08 02:47:37 · 878 阅读 · 0 评论