数据结构
文章平均质量分 85
饿了我会自己捡代码吃
是什么?为什么?怎么用?
展开
-
【数据结构】布隆过滤器的原理讲解及其底层实现和海量数据问题
1. 增加和查询元素的时间复杂度为:O(K), (K为哈希函数的个数,一般比较小),与数据量大小无关2. 哈希函数相互之间没有关系,方便硬件并行运算3. 布隆过滤器不需要存储元素本身,在某些对保密要求比较严格的场合有很大优势4. 在能够承受一定的误判时,布隆过滤器比其他数据结构有这很大的空间优势5. 数据量很大时,布隆过滤器可以表示全集,其他数据结构不能6. 使用同一组散列函数的布隆过滤器可以进行交、并、差运算。原创 2024-07-13 11:33:50 · 924 阅读 · 0 评论 -
位图(Bitset)的应用及其原理数据结构介绍
【代码】位图(Bitset)的应用及其原理结构介绍。原创 2024-07-12 09:44:43 · 1225 阅读 · 0 评论 -
【数据结构】深入理解哈希及其底层数据结构
桶的个数是一定的,随着元素的不断插入,每个桶中元素的个数不断增多,极端情况下,可 能会导致一个桶中链表节点非常多,会影响的哈希表的性能,因此在一定条件下需要对哈希表进行增容,那该条件怎么确认呢?开散列最好的情况是:每个哈希桶中刚好挂一个节点, 再继续插入元素时,每一次都会发生哈希冲突,因此,在元素个数刚好等于桶的个数时,可以给哈希表增容。闭散列:也叫开放定址法,当发生哈希冲突时,如果哈希表未被装满,说明在哈希表中必然还有 空位置,那么可以把key存放到冲突位置中的“下一个” 空位置中去。原创 2024-07-11 16:45:27 · 998 阅读 · 0 评论 -
【高阶数据结构】红黑树详解
在前面我们学习了平衡二叉树,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此map、set等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现,除了AVL树,下面我们要学习的红黑树也是处理二叉树自身缺陷的一种方式RED,BLACK,_kv(kv),_col(RED){}原创 2024-06-12 21:47:26 · 1265 阅读 · 0 评论 -
【数据结构】AVL树(平衡二叉树)
AVL树是一个平衡的二叉搜索树,它的每个节点的左右子树高度差的绝对值不超过1,因此,哪怕最坏也只是查找高度次,保证了查询时高效的时间复杂度O(log_n)。但是它的缺陷也很明显:如果我们要对AVL树做一些修改方面的操作时,它的性能就十分低了,因为在修改时我们还要维护它的绝对平衡,旋转的次数比较多,而且在删除时,最坏情况可能会更新到根节点。所以,如果只是需要一种查询高效且有序的数据结构,且数据个数为静态(不改变),比较适合AVL树,但如果你需要经常修改的话,AVL树可能就不太适合了原创 2024-06-10 20:39:17 · 1235 阅读 · 1 评论 -
二叉搜索树(BST,Binary Search Tree)
为何学?1.二叉搜索树是一种树形结构,是一种查找效率非常高的结构,值得我们去学习2.map和set的底层也是二叉搜素树,学习二叉搜索树可以让我们更好的了解set和map的特性。原创 2024-06-06 21:38:32 · 773 阅读 · 0 评论 -
数据结构 归并排序详解
归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。时间复杂度:O(N*logN)空间复杂度:O(N)稳定性:稳定。原创 2024-02-01 20:21:09 · 539 阅读 · 3 评论 -
数据结构 栈的概念及栈的实现
栈(后进先出,先进后出),一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作原创 2024-01-01 15:07:31 · 1049 阅读 · 0 评论 -
数据结构 队列的概念及队列的实现
只允许在一端进行插入数据操作,在另一端进行删除数据操作的,队列具有:进行插入操作的一端称为队尾:进行删除操作的一端称为队头。原创 2023-12-30 16:23:22 · 539 阅读 · 4 评论