![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 93
利刃大大
不怕山高,只怕腿软
展开
-
跳表很难吗?手把手教你如何跳跃它!
skiplist是一种随机化的数据结构基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(logN)大多数情况下,因为是实现上是概率问题),因为其性能匹敌红黑树且实现较为简单,因此在很多著名项目都用skiplist来代替红黑树,例如LevelDBRocksDBRedis中的有序集合zset的底层存储结构就是用的skiplist。 目前常用的key-value哈希表:插入、查找最快,为O(1);如使用链表实现则可实现无锁;数据有序化需要显式的排序操作,即哈希表是无序的。红黑树:插入、查找为。原创 2023-07-09 11:55:01 · 391 阅读 · 0 评论 -
图的基本概念以及DFS与BFS算法
邻接矩阵和邻接表是相辅相成的,各有优缺点,要根据实际情况进行选择,有时候也可以一起使用他们进行搭配!一般情况下,对于稠密图,我们选择邻接矩阵;对于稀疏图,我们选择邻接表!下面我们讲解各种算法的时候,采用的是邻接矩阵来实现,因为一般我们在做oj以及实现一些算法的时候,邻接矩阵会用的比较多~原创 2023-02-06 07:59:01 · 995 阅读 · 0 评论 -
最小生成树算法:Kruskal 与 Prim算法
。和。这两个算法都采用了。贪心算法:是指在问题求解时,总是做出当前看起来最好的选择。也就是说贪心算法做出的不是整体最优的的选择,而是某种意义上的局部最优解。。🔴 并且!原创 2022-12-21 10:22:03 · 645 阅读 · 0 评论 -
unordered系列关联式容器以及哈希表原理实现
unordered_map在线文档说明是存储键值对的关联式容器,其允许通过key快速的索引到与其对应的value。在中,键值通常用于惟一地标识元素,而映射值是一个对象,其内容与此键关联。键和映射值的类型可能不同。在内部,没有对按照任何特定的顺序排序, 为了能在常数范围内找到key所对应的value,将相同哈希值的键值对放在相同的桶中。容器通过key访问单个元素要比 map 快,但它通常在遍历元素子集的范围迭代方面效率较低。实现了直接访问操作符(operator[]原创 2022-12-21 10:19:26 · 414 阅读 · 0 评论 -
并查集的原理及实现
在一些应用问题中,需要。。在此过程中。适合于描述这类问题的抽象数据类型称为。比如:某公司今年校招全国总共招生10人,西安招4人,成都招3人,武汉招3人,10个人来自不同的学校,起先互不相识,每个学生都是一个独立的小团体,现给这些学生进行编号:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};给以下数组用来存储该小集体,数组中的数字代表:该小集体中具有成员的个数。(负号下文解释)毕业后,学生们要去公司上班,每个地方的学生自发组织成小分队一起上路,于是:西安学生小分队,成都学生小分队。原创 2022-12-21 09:48:31 · 441 阅读 · 0 评论 -
哈夫曼树构建、编码、译码C++实现
这里就不仔细讲哈夫曼树的原理了,资料很多,网上和书籍都是有的,主要讲一下如何实现构建哈夫曼树和编码译码的操作!做这个实验也是花了半天的功夫,等到做完发现其实最难的不是实现,而是难在你要选用什么数据结构去搭建这个哈夫曼树以及编码译码,这个流程下来这个选用的数据结构是很重要的,决定着你的算法是如何的!我用的是实现的,数据结构方面选用了、、、,其实不用也可以,完全可以自己弄个结构体也行的,但是已经学过表示万岁 O(∩_∩)O!原创 2022-11-15 10:34:08 · 2366 阅读 · 0 评论 -
【泛型编程】模板全详解
泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。其中,模板分为两类,一类是函数模板,一类是类模板。template < class T1 , class T2 , . . . , class Tn > class 类模板名 {//类内成员定义 }不用再去 typedef 类型!...原创 2022-08-08 14:58:30 · 547 阅读 · 1 评论 -
【stack】【queue】【priority_queue】【deque】详解
🔍 文档介绍:stack - C++ Reference通过观察文档我们不难发现,接口相较于之前的 string、vector 和 list 少了很多。它甚至连拷贝构造和析构都没有自己实现,然而这些都得益于容器适配器的使用。不难发现, stack、queue 也没有迭代器,这也不难理解,因为栈和丢列本来不是用来遍历的,这样子的话只会破坏他们的原则。测试代码:Ⅱ.queue的介绍和使用1.queue的概念队列只允许在一端进行插入数据操作,在另一端进行删除数据操作 的特殊线性表。入队列,进行插入操作的.原创 2022-08-07 18:31:19 · 597 阅读 · 4 评论 -
八大常见算法排序详解
快排、堆排序、归并排序等排序详解原创 2022-07-16 21:33:07 · 466 阅读 · 7 评论