数据结构与算法
文章平均质量分 82
#Horizon
今日潜修默进,是为来日天下行走
展开
-
布隆过滤器
布隆过滤器的实现(c++)原创 2022-02-11 15:55:08 · 113 阅读 · 0 评论 -
数据结构与算法_排序算法
本博客基于《算法技术手册》,是类似学习日志一样的东西,若有错误请反映给与博主。 我的所有代码可能因为篇幅的问题没有写全,只是选择几个少的或者是书中的代码贴上去上去了。其完整的程序和测试程序都会通过GitHub的形式交付到看这篇blog的你手上。 GitHub传输门 排序的基本要素 马克思主义指导我们具体问题具体分析,排序也是一样针对不同的场景我们也会选择不同的排序手法。请关注以下几个方面 1.数据的表示方式 待排序的集合到底在哪里放着。这个问题是一个值得思考的问题。获取是存储在RAM,也或许是在二级存储甚至原创 2020-09-29 14:27:40 · 320 阅读 · 2 评论 -
数据结构与算法_堆
堆的概念 概念 堆是在概念上是一个完全二叉树,在具体是物理实现上是一个数组。完全二叉树有个一优美的性质:有关双亲结点和孩子结点,由层序遍历对应于数组标号直接按的关系。说人话就是:把完全二叉树的层序遍历的一个设置为1号(不是 0 开头),我们发现一个节点编号为的 i 的左孩子标号一定是 2i ,其右孩子标号一定是 2i+1。 利用这样的性质,我们可以用来实现优先队列。(用普通的树也是可以实现的,按照邓老师的说法就是:杀鸡用牛刀) 大顶堆和小顶堆 所谓大顶堆就是,堆中最大的元素是在根的位置,任意子树原创 2020-08-31 00:44:40 · 202 阅读 · 0 评论 -
数据结构与算法_并查集
概念 并查集(Disjoint Sets),字面意思是一种集合。这个集合具有的功能是合并和查找 合并(Union):将两个集合合并成一个集合。 查找(Find):判断两个元素是否在一个集合。 并查集使用数组就可以实现:parent[]。 图的环问题 如果是我们想要判断一个无向图是否存在环,我们应该如何做呢? 由这个问题正式引出并查集: 首先,以上提到的并查集是一个树状的结构,其中parent数组:parent[i] = j 的含义就是 parent of i is j; 即i的双亲是j。 我原创 2020-08-28 21:36:29 · 169 阅读 · 0 评论 -
数据结构与算法_链表
链表基本 初识链表 struct Node{ int data; Node * next; }; 以上是链表最基本的结构:一个放数据的,一个存指针的。这里的指针仅仅是C/C++的一种叫法。实际上就是为了索引下一块的一个坐标。如果有的话就写坐标,没有的话就是NULL/nullptr。 初始化 Node * CreatLinkList(int * array, int len){ Node * pre, * head, * temp;//pre是保存当前结点的前驱 head = new Node;原创 2020-08-27 22:52:06 · 648 阅读 · 1 评论 -
数据结构与算法_栈和队列
栈 概念 正如标题所述,栈是一种被约束的线性结构。我们在一个线性结构上给出了一个规定:第一个进去的最后一个出来。这就像有一摞书放在地面上,不允许从中间抽出来,只能从上面一本一本拿一样。这样的线性就是栈。 所谓栈:限定仅在表头进行插入删除的线性结构。因为是后进先出(Last In First Out) 不像普通的线性结构有CRUD(增删改查)那样丰富的操作。栈仅仅只有进和出两个操作。 栈的顺序存储 压栈Push bool Push(T data){ if (IsFull() == true) ret原创 2020-08-27 21:47:42 · 353 阅读 · 0 评论