
常用数据结构
包括的平衡二叉树、B-和B+树、布隆过滤器
yuanmartin
这个作者很懒,什么都没留下…
展开
-
搜索树——c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录搜索树索引二叉搜索树:二叉搜索树的操作:1. 搜索:2. 插入3. 删除二叉搜索树的实现搜索树搜索树适用于字典描述,与跳表和散列相比,二叉搜索树和平衡搜索树使用更加灵活,在最坏的情况下性能有保证。二叉搜索树:是一棵二叉树,可能为空,非空的二叉搜索树满足以下特征:1.每个元素都有唯一的关键字2.根节点的左子树中,元素的关键字都小于根节点的关键字3.根节点的右子树中,元素的关键字都大于根节点的关键字4.根节点左右子树也原创 2020-09-10 17:58:45 · 831 阅读 · 0 评论 -
平衡搜索树——竞赛树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录竞赛树:C++实现赢者树:二、竞赛树的实现代码:1.引入库竞赛树:tournament tree, 也是以可完全二叉树,所以使用数组描述效率最好,竞赛树的基本操作是替换最大(小)元素赢者树和输者树:为了便于实现,需要将赢者树限制为完全二叉树。n个参与者的赢者树,具有n个外部节点,n-1个内部节点。每个内部节点记录的是在该节点比赛的赢者。最大赢者树和最小赢者树:为了确定输赢者,给每个选手一个分数,分数最大挥着最小的获胜原创 2020-09-10 17:55:08 · 474 阅读 · 0 评论 -
平衡搜索树——B+树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录B+树简介B+树结构代码实现1.BPulsTree.hBPulsTree.cppDemo.cppB+树简介B+ 树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+ 树元素自底向上插入,这与二叉树恰好相反。B+树结构B+树有一个重要的参数叫 阶 (m),决定了一颗B+树每一个节点存储关键子的个数。每一个节点都会按顺序存储一组关键字,原创 2020-09-10 17:33:38 · 2160 阅读 · 0 评论 -
线性表——栈的c++模板实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1.基本概念2.构造栈3.c++模板实现3.1 节点的数据结构3.2 用模板类构造一个简单的stack类1.基本概念栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out)只能在栈顶进行插入和删除操作压栈(或推入、进栈)即push,将数据放入栈顶并将栈顶指针加一出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一栈的基本操作有:pop,push,判断空,获取栈顶元素,求栈大小2.构造栈原创 2020-09-10 16:47:50 · 435 阅读 · 0 评论 -
线性表——队列的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录队列c++的代码实现1.数组实现2.链表实现队列队列: 是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一一样,队列是一种操作受限的线性表。进行插入操作的端称队尾,进行插入操作的端称为队尾,进行删除操作的端称为队头;队列的特点: 先进先出;队列中有两个值,一个是front记录队头的位置,另一个是rear记录队尾的位置。在实际应用时,由于数组队列的原创 2020-09-10 09:57:51 · 436 阅读 · 0 评论 -
二叉树——优先队列的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2020-09-09 22:01:49 · 341 阅读 · 0 评论 -
线性表——hashtable的c++实现
https://blog.youkuaiyun.com/qq_36408262/article/details/96475182原创 2020-09-09 18:02:16 · 410 阅读 · 0 评论 -
线性表——跳表的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、 跳表的原理二、跳表 c++ 实现二、使用步骤1.引入库2.读入数据总结一、 跳表的原理跳表(skip list) 对标的是平衡树(AVL Tree),是一种 插入/删除/搜索 都是 O(logn)O(logn) 的数据结构。它最大的优势是原理简单、容易实现、方便扩展、效率更高。因此在一些热门的项目里用来替代平衡树,如 redis, leveldb 等。跳表顾名思义就是跳跃的表格,理解起来其实就是跳着插入或者搜索。具体什原创 2020-09-09 17:57:32 · 409 阅读 · 1 评论 -
集合——并查集的C++实现及优化
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档并查集的C++实现及优化前言一、什么是并查集(Disjoint-set)三、C++实现一方法一:方法二:五、C++实现二(优化版)总结前言提并查集(Disjoint-set) 的代码非常简洁,但是功能却很强大。关于并查集,这里有一篇文章超有爱的并查集~,讲得非常好,但是只使用了并查集两个主要优化中的"路径压缩"优化,并且我觉得很多情况下采用递归的写法要比采用循环的写法要易懂很多。本文将使用C++实现并查集并使用“按秩合并”和”路径压原创 2020-09-09 16:46:42 · 10616 阅读 · 7 评论 -
平衡搜索树——B-树 C++的模板类实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档B-树 C++的模板类实现1.定义2.建立B-树的节点3.插入数据key4.完整代码1.定义一棵m阶B-树是拥有以下性质的多路查找树:1、非叶子结点的根结点至少拥有两棵子树;2、每一个非根且非叶子的结点含有k-1个关键字以及k个子树,其中⌈m/2⌉≤k≤m;3、每一个叶子结点都具有k-1个关键字,其中⌈m/2⌉≤k≤m;4、key[i]和key[i+1]之间的孩子节点的值介于key[i]、key[i+1]之间5、所有的叶子结原创 2020-09-09 14:19:39 · 243 阅读 · 0 评论 -
多叉树——Trie树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Trie树 c++实现Trie树介绍2. Trie树性质3. trie树典型应用:(1)字符串检索(2) 词频统计(3) 去除重复单词(4) 字符串排序(5) 最长公共前缀(6) 前缀匹配:4. Trie树设计5. Trie树优点:6. Trie树操作7. 实现8. 其他代码实现9. 参考:Trie树介绍Trie,又称单词查找树、前缀树,是一种多叉树结构。如下图所示:上图是一棵Trie树,表示了关键字集合{“a”, “to”, “t原创 2020-09-09 10:37:29 · 1436 阅读 · 0 评论 -
二叉树——线段树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、线段树的概念三、线段树的建立四、线段树的插入五、线段树求和调用前言当你遇到有一些类似线性查找的题的时候,刚好数据特别大的时候,那么线段树这个东西就很好用了,但是线段树的概念就是学习线段树的一大难点,要想学好线段树,就要先了解线段树。一、线段树的概念线段树是一棵二叉树,其节点表示的是一个区间 [ x , y ];每一个叶子节点表示了一个单位区间,根节点表示的是“整体”的区间;每个非叶子节点的区间 [ x ,原创 2020-09-09 09:21:41 · 292 阅读 · 0 评论 -
海量数据处理——Bloom Filter C++代码实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一. 实例二. Bloom Filter的算法(1) 加入字符串过程(2) 检查字符串是否存在的过程(3) 删除字符串过程三. Bloom Filter参数选择(1)哈希函数选择(2)Bit数组大小选择四. Bloom Filter实现代码前言Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。一.原创 2020-09-07 15:34:20 · 856 阅读 · 0 评论 -
海量数据处理——处理方法的总结分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档总结分析前言1. Bloom Filtering3. 堆技术前言海量数据处理中常用到的技术,如下:1. Bloom Filtering基本的Bloom Filtering支持快速的插入和查找操作,是一种hash表技术。基本的数据结构非常简单,容量为m的位数组,k个hash函数,将输入的n个元素存储在位数组里面。每次插入一个新的元素,先计算该元素的k个hash指,将位数组对应hash值位置为1. 查找某个元素时,同样的先计算k个原创 2020-09-07 14:56:31 · 218 阅读 · 0 评论 -
平衡搜索树——B树原理以及代码实现 C/C++
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、B树的概念二、B树满足以下性质:四、树的构造:(1)查找结点:(2)插入:五、代码实现:六、B树应用:前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、B树的概念B树是平衡的多叉树,一个节点有多于两个(不能小于)结点的平衡多叉树。由于B树倒着生长原创 2020-09-06 07:28:42 · 262 阅读 · 0 评论 -
平衡搜索树 ——B树,B-树和B+树的区别
B树,B-树和B+树的区别B树B-树的特性:B+树B+树与B-树的区别B+的特性:B*树小结B树二叉搜索树:1、所有的非叶子结点至多拥有两个儿子(Left和Right)2、所有结点存储一个关键字3、非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树,如下图:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应的关键字;原创 2020-09-05 12:30:11 · 468 阅读 · 0 评论 -
平衡搜索树 ——红黑树的c++实现
红黑树的c++实现一、红黑树的介绍1、红黑树的特性:二、红黑树的c++实现(代码说明)1. 基本定义2. 左旋3. 右旋4. 添加5. 删除操作三、红黑树的C++实现(完整源码)四、 红黑树的C++测试程序一、红黑树的介绍 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。1、红黑树的特性:(1)每个节点或黑色,或者红色;(2)根节点是黑色;(3)每个叶子节点(NI原创 2020-09-05 11:22:57 · 244 阅读 · 0 评论 -
二叉查找树 ——c++实现版本
概要本章给出二叉查找树的C++版本。这里不再对树的相关概念进行介绍,若遇到不明白的概念,可以在上一章查找。文章目录二叉查找树简介二叉查找树的C++实现1. 节点和二叉查找树的定义1.1 二叉查找树节点1.2 二叉树操作2 遍历2.1 前序遍历2.2 中序遍历2.3 后序遍历3、查找4、最大值和最小值4.1 查找最大值代码:4.2 查看最小值的代码:5. 前驱和后继6. 插入插入节点的代码7. 删除删除节点的代码9. 销毁销毁二叉查找树的代码二叉查找树的C++实现(完整源码)二叉查找树的C++实现原创 2020-09-05 10:05:05 · 156 阅读 · 0 评论 -
平衡搜索树 ——红黑树的c语言实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录红黑树的介绍红黑树的c实现(代码说明)1、基本的定义2. 左旋3. 右旋4.添加5. 删除操作红黑树的C实现(完整源码)红黑树的实现文件(rbtree.h)红黑树的实现文件(rbtree.c)红黑树的测试文件(rbtree_test.c)红黑树的C测试程序红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含原创 2020-09-05 09:31:54 · 329 阅读 · 0 评论 -
平衡搜索树 ——分裂树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档分裂树的c++实现分裂树的简介一、分裂树的C++实现1. 基本定义1.1 节点1.2 分裂树2. 旋转3.插入4.删除二、伸展树的C++实现(完整源码)1.伸展树的实现文件(SplayTree.h)2.伸展树的测试程序(SplayTreeTest.cpp)伸展树的C++测试程序分裂树的简介伸展树(Splay Tree)是特殊的二叉查找树。它的特殊是指,它除了本身是棵二叉查找树之外,它还具备一个特点: 当某个节点被访问时,伸展树会通过原创 2020-09-05 07:38:07 · 282 阅读 · 0 评论 -
平衡搜索树 ——AVL树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据3.执行数据前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入原创 2020-09-04 17:58:14 · 228 阅读 · 0 评论