文章 2024-05-09 来自:开发者社区

数据结构/C++:位图 & 布隆过滤器

哈希表通过映射关系,实现了O(1)的复杂度来查找数据。相比于其它数据结构,哈希在实践中是一个非常重要的思想,本博客将介绍哈希思想的两大应用,位图与布隆过滤器。 位图 看到以下题目: 给40亿个无序不重复的无符号整数(unsigned int)。如何判断一个数字是否在这40亿个数字之中?...

数据结构/C++:位图 & 布隆过滤器
文章 2024-05-09 来自:开发者社区

数据结构/C++:哈希表

哈希表概念 在顺序表中,查找一个数据的时间复杂度为O(N);在平衡树这种树形结构中,查找一个数据的时间复杂度为O( log ⁡ N \log_{}{N}log N )。尽管平衡树的搜索已经很优秀了,但是我们理想中的搜索方法是不经过任何比较,一次直接从数据结构中拿到想要的元素,也就是把搜索的复杂度优化为O(1)。这看似天方夜谭,但是哈希表可以做到,本博客就讲解哈希表,以及它的多...

数据结构/C++:哈希表
文章 2024-05-09 来自:开发者社区

数据结构/C++:红黑树

概念 红黑树是一种二叉搜索树,一般的二叉搜索会发生不平衡现象,导致搜索效率下降,于是学者们开始探索如何让二叉搜索树保持平衡,这种树叫做自平衡二叉搜索树。起初学者发明了AVL树,其通过一定算法保持了二叉搜索树的严格平衡,不久后Rudolf Bayer发明了红黑树,红黑树的平衡是较为宽泛的,为了保持平衡,红黑树付出的代价比AVL树更小。因此红黑树被更为广泛的使用,比如Java,C++,pyt...

数据结构/C++:红黑树
文章 2024-05-09 来自:开发者社区

数据结构/C++:AVL树

概念 AVL树是一种自平衡二叉搜索树(BST),被命名为Adelson-Velskii和Landis树,以它们的发明者们的名字命名。AVL树通过在插入和删除操作后进行自旋操作来保持树的平衡,以确保树的高度始终保持在O(logN)。这样可以减少树的平均长度,提高搜索效率。 一颗二叉搜索树,如果每个根节点的左右子树的高度差的绝对值不超过1,那么这就是一颗AVL树 比如这就是一...

数据结构/C++:AVL树
文章 2024-05-09 来自:开发者社区

数据结构/C++:二叉搜索树

概念 二叉搜索树(BST - Binary Search Tree)是一种特殊的二叉树,每个顶点最多可以有两个子节点。其遵顼以下规则: 若它的左子树不为空,则左子树上所有节点的至都小于根节点的值 若它的右子树不为空,则右子树上所有节点的至都大于根节点的值 它的左右子树也分别为二叉搜索树 比如以下二叉树就是一个二叉搜索树: ...

数据结构/C++:二叉搜索树
文章 2024-05-07 来自:开发者社区

高效处理大规模数据集的概率型数据结构—— 布隆过滤器 [C++入门]

引言 在上一篇文章位图中,我们了解了C++中位图的概念和实现。位图是一种用于表示和操作大量二进制位的数据结构,它在解决需要高效存储和操作布尔类型数据的问题上具有重要作用。而在本篇文章中,我们将继续探讨另一个在C++中常用的数据结构——布隆过滤器。布隆过滤器是一种概率型数据结构,它可以高效地判断一个元素是否存在于一个集合中,同时具备较小的内存占用和快速查询的特点。通过对比位图和布隆过滤器的...

高效处理大规模数据集的概率型数据结构—— 布隆过滤器 [C++入门]
文章 2024-03-27 来自:开发者社区

【C/C++ 数据结构 优先队列】了解学习`std::priority_queue`的使用

std::priority_queue 是在 C++98 标准中引入的。C++98 是第一个官方批准的 C++ 标准,它在很大程度上奠定了 C++ 语言的基础,并引入了 STL(Standard Template Library),STL 包括了一系列标准的模板类和函数,用于处理数据结构和算法操作。 std::priority_queue 是 STL 的一部分,作为一种容器适配器,它提供...

文章 2024-03-27 来自:开发者社区

了解如何 在C++17 中实现 无锁数据结构

第一章: 引言 在探索 C++17 中的无锁数据结构之前,我们首先需要理解无锁编程的基本概念及其在现代软件开发中的重要性。无锁编程是一种高级并发技术,它旨在提高多线程程序的性能和可靠性。在这个章节中,我们将深入探讨无锁编程的概念,以及它如何满足人类对于更高效、更可靠软件的本能需求。 1.1 无锁编程的重要性 在多线程环境中,传统的锁定机制会导致性能瓶颈和潜在的死锁问题。无...

文章 2024-03-27 来自:开发者社区

C++数据结构设计:理解并选择策略模式与模板特化

第一章: 引言 1.1 数据结构设计的重要性 在现代软件开发中,数据结构设计是一个核心环节,它不仅关乎程序的性能,还深刻影响着代码的可维护性和可扩展性。在面对各种设计决策时,开发者需要考虑到数据结构在实际应用中的表现,以及它们如何影响用户的体验和满意度。正如人类在面对决策时会权衡利弊一样,合理的数据结构设计能够在性能和灵活性之间找到平衡点,满足不同的应用场景需求。 1.2...

文章 2024-03-27 来自:开发者社区

探索C++中回调函数的数据结构和封装的权衡以及示例

1. 引言:C++数据结构的重要性 在编程世界中,数据结构的选择宛如艺术品的构思,它不仅仅是代码的组成部分,更是思维和创造力的体现。每一种数据结构,就像不同的画布和颜料,赋予程序以生命和效率。C++,作为一种高效而强大的编程语言,提供了丰富的数据结构选择,让程序设计不仅是逻辑的构建,也是对人类智慧的探索。 1.1. C++编程中数据结构的基本角色 数据结构在C++中扮演着...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

算法编程

开发者社区在线编程频道官方技术圈。包含算法资源更新,周赛动态,每日一题互动。

+关注