数据结构
文章平均质量分 90
XueP.H
这个作者很懒,什么都没留下…
展开
-
布隆过滤器—Bloom Filter
1、布隆过滤器概述1)布隆过滤器的使用场景:比如在字处理软件中,需要检查一个英语单词是否拼写正确(也就是要判断它是否在已知的字典中)在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上在网络爬虫里,一个网址是否被访问过以上这些情况,最直接的方法就是将集合中全部的元素存在计算机中,遇到一个新 元素时,将它和集合中的元素直接比较即可。一般来讲,计算机中的集合是用哈希表(hash table)来存储的。它的好处是快速准确,缺点是费存储空间。当集合比较小时,这个问题不显著,但是当集合巨大时,哈希表存储效率原创 2021-12-10 11:29:39 · 978 阅读 · 0 评论 -
Hash表查找与分布式一致性Hash
1、背景如何从海量数据中查询某个字符串是否存在?如果使用有序数据采用从前向后的对比查找,时间复杂度为O(n),如果使用折半查找(平衡二叉树),时间复杂度为O(log2nlog_2{n}log2n)。对于海量数据查找,使用Hash表查询会更高效。2、Hash表概述Hash表又称散列表,基本思路是:设要存储的元素个数是n,设置一个长度为m(m≥n)的连续内存单元(数组)。找到一个哈希函数并计算要存储的值,得到一个哈希值,使得这个哈希值与内存单元地址存在映射关系(也可以与数据下标存在映射关系)。通过哈希原创 2021-12-09 15:48:57 · 357 阅读 · 0 评论 -
B树和B+树
B树1、B树定义AVL树和红黑树都是用作内查找的数据结构,即被查询的数据集合不大,可以放在内存中;B树和B+树是用作外查询的数据结构,其数据是存储在外村中的。B树中所有节点的孩子节点的最大值称为B树的阶,通常用m表示。(节点最大分支数就是阶数)从查找效率来说,要求m≥3B数的要求如下: 树中每个节点最多有m颗子树 若根节点不是叶子节点,则根节点至少有两个子树(分支) 除根节点外,所有非叶子结点最少有[m/2]颗子树 关键字数量n规定:[m/2]-1≤n≤m原创 2021-12-07 22:19:39 · 477 阅读 · 0 评论 -
红黑树—rbtree
1、红黑树简介红黑树(Red Black Tree)是一种重要的数据结构,大多数自平衡BST(self-balancing BST) 库函数都是用红黑树实现的,比如C++中的map 和 set (或者 Java 中的 TreeSet 和 TreeMap)。红黑树也用于实现 Linux 操作系统的 CPU 调度。完全公平调度(Completely Fair Scheduler)使用的就是红黑树2、红黑树与AVL树(二叉平衡树)的比较: AVL树的时间复杂度虽然优于红黑树,但是对于现在的计算机原创 2021-12-06 21:01:03 · 510 阅读 · 0 评论