数据结构与算法游乐场(C++)
文章平均质量分 92
好玩的是过程~~
salt.Zhang
这个作者很懒,什么都没留下…
展开
-
图论之最短路径(C++) -- 拉帮结派搞关系
图论之最短路径图论之最短路径(C++) --拉帮结派搞关系带权图的边图论之最短路径(C++) --拉帮结派搞关系 这时一个能让人悟出人生道理的算法,为什么这么说?0?,让我们试想一下,有这么一群相互认识的人,这群人都想吃烤串,但是只有其中一个人会烤串,而且这个人一次只能为一个人烤串,先为谁烤,只取决于谁和他关系好(大佬总是这么会对金钱烦恼的,所以不考虑金钱),这时这群人中的另外两个人,小明和这个烤串大佬是兄弟关系,小红和这个大佬只见过一面或者压根不认识,但和小明是同学关系,这时对于这两人来说,小明想快原创 2020-07-23 11:42:40 · 231 阅读 · 0 评论 -
图论之最小生成树(C++) -- 找最近的朋友拉拉手
图论之最小生成树图论之最小生成树(C++) -- 找最近的朋友拉拉手Kruskal算法 -- 最短的,你出来图论之最小生成树(C++) – 找最近的朋友拉拉手 最小生成树(MST, Minimum Spanning Tree)顾名思义就是一棵树,这颗树要满足两个要求,一是这是一棵树,既然是一颗树就不能有环,也就是如果在找到的最小生成树中去掉任意一条边,都会将这棵树分成两颗,数学说法是两个连通分量,二是所有图中的顶点都在树中;想象一个房间里塞满了人,全是抠脚大汉,油腻多汗,出去的条件是所有人都手拉手(一原创 2020-07-20 11:27:54 · 214 阅读 · 0 评论 -
图论之图与图的遍历(C++) -- 每个顶点都是主角
图的遍历图的遍历(C++) -- 每个顶点都是主角图的遍历图的遍历(C++) – 每个顶点都是主角 聊图要先聊聊树,一棵树需要有一个根,别的节点都是在根的基础上散发开的,根据节点间和与根直接不同的关系形成了很多特殊的树;其实图(连通图)也可以看作是一棵树,无非就是随便选取一个顶点作为根就好了,不同的是树中有根和父子节点的概念,在图中没有,每个顶点都可以是根,也就是说图有着更广泛的性质; ...原创 2020-04-27 16:37:57 · 522 阅读 · 0 评论 -
并查集(C++) -- 关系网
并查集并查集(C++) -- 关系网并查集 -- 基本思路实现并查集 -- 优化实现并查集(C++) – 关系网 并查集,并就是组件关系网,查就是查找关系网中的成员;通俗来理解就是A和B交朋友,A和B就形成了一个AB的关系网,A和C交朋友,ABC就成了一个关系网,因为B可以通过A认识C,以此类推;所以并查集关心的是哪些成员是相互联系的,不管是直接的还是间接的; 一个集合总要有个老大才能表...原创 2020-04-16 14:38:06 · 809 阅读 · 0 评论 -
平衡二叉树(C++) -- 左旋旋右旋旋
平衡二叉树平衡二叉树(C++) -- 左旋旋右旋旋平衡二叉树 -- 左单旋平衡二叉树 -- 右单旋平衡二叉树 -- 左右双旋平衡二叉树 -- 右左双旋平衡二叉树 -- 插入和删除实现平衡二叉树(C++) – 左旋旋右旋旋 平衡二叉树全称平衡二叉搜索树,所以首先具备了二叉搜索树的特性,因为二叉搜索树并未对树的高做限制,只要求了左小右大,这就可能再极端情况下,出现左斜树或右斜树,这是查找就从O(...原创 2020-04-16 11:50:06 · 1503 阅读 · 0 评论 -
二叉树的遍历(C++) -- 左顾右盼
二叉树的遍历二叉树的遍历(C++) -- 左顾右盼深度优先 -- 先序遍历深度优先 -- 中序遍历深度优先 -- 后序遍历广度优先 -- 层序遍历二叉树的遍历(C++) – 左顾右盼 二叉树的遍历也就是对二叉树的每个节点都获取一遍该节点所存的键值或值,每个树肯定是从根节点开始走,但是走归走,不一定走到这就非得立马将值获取过来,因为二叉树的特性,遍历时每个节点必定会经过3次,这就使得深...原创 2020-04-10 14:51:14 · 158 阅读 · 0 评论 -
二叉搜索树(C++) -- 左小右大
二叉搜索树二叉搜索树(C++) -- 左小右大二叉搜索树 -- 递归玩法二叉搜索树 -- 性能二叉搜索树(C++) – 左小右大 树的概念应该比较直观,一个根延申出很多的分支,每个分支又延伸出多个分支,以此类推,直到没有分支的为叶,以此枝繁叶茂;二叉树则是一棵有性格的树,规定了一个节点的分支不能超过2个;二叉搜索树则是在这个基础上再规定了,一个节点的左子节点的值必须小于该节点的值,右子节...原创 2020-04-10 13:23:30 · 1964 阅读 · 0 评论 -
二分查找(C++) -- 查找思路的起始
二分查找二分查找(C++) -- 查找思路的起始二分查找法 -- 非递归玩法二分查找法 -- 递归玩法二分查找(C++) – 查找思路的起始 二分查找就是将有序序列一分为二,注意必须是有序序列,将待查找的值与有序序列的中间位置的值进行比较,相等则已找到,小于则在左半继续找,大于则在右半继续找,依次类推,每找一次去掉一半的数据,用排序算法将序列排好序且可以进行各种动态维护后,就可以用二分查...原创 2020-04-09 15:45:01 · 160 阅读 · 0 评论 -
索引堆(C++) -- 小索引与大数据的那些事
索引堆索引堆(C++) -- 小索引与大数据的那些事索引堆(C++) – 小索引与大数据的那些事 堆是优先级队列的最佳代理者,一般情况下已经很好用了,但是因为堆的维护需要进行大量的数据赋值操作,当数据很大时会有大量的时间损耗,所以索引堆就发挥其意义了;在堆的类中新建一个索引数组,索引数组的一个索引值对应一个元素数据,且索引数组中索引与元素数据的对应关系不变(当然可以进行数据的相应操作,增删改...原创 2020-04-02 16:14:11 · 217 阅读 · 0 评论 -
堆排序(C++) -- 虽快,但非主业
堆排序堆排序(C++) -- 虽快,但非主业堆排序 -- 反向复制堆排序 -- 逐级最大堆化堆排序 -- 原地变有序堆排序性能PK赛堆排序(C++) – 虽快,但非主业 堆排序是一个O(nlog(n))级别的算法,因为堆的特性,决定其的级别,好歹是个完全二叉树,怎么滴都带着二分的特性,O(nlog(n))顺理成章了;实现堆排序的算法有很多,这里列举了三种,都是用最大堆来实现的,会用到 ...原创 2020-04-02 14:19:52 · 158 阅读 · 0 评论 -
堆(C++) --优先级队列的代理者
堆堆(C++) --优先级队列的代理者最大堆堆(C++) --优先级队列的代理者 聊堆不能不聊优先级队列,优先级队列就是决定哪个任务优先执行的队列,通常会有一个优先级的数据,通过数据的大小来判断优先级,实现优先级队列其实有三种方式:第一种:无序数组队列,这种在入队时的时间复杂度为O(1),但是出队时的时间复杂度是O(n);第二种:有序数组队列,这种在入队时的时间复杂度为O(n),但是出...原创 2020-04-02 11:19:47 · 119 阅读 · 0 评论 -
快速排序(C++) -- 优不优化两个世界
快速排序快速排序(C++)--优不优化两个世界快速排序--基本玩法快速排序--双路玩法快速排序--三路玩法快速排序性能PK赛快速排序(C++)–优不优化两个世界 快速排序是一个O(nlogn)的算法,这个算法优化好后在综合性能上是相当优秀的,不进行优化或者优化不好会慢到怀疑人生,因为一不小心就会退化成O(n2)的算法;所以可以这么说,别的算法可能优不优化都能用,快速排序是不优化没法用; ...原创 2020-04-02 16:14:40 · 102 阅读 · 0 评论 -
归并排序(C++) -- 速度与空间有机结合
归并排序归并排序(C++)--速度与空间有机结合归并排序--自顶向下归并排序--自底向上插入排序与归并排序性能PK赛归并排序(C++)–速度与空间有机结合 归并排序也是一个O(nlogn)的算法,之所以称这个算法为速度与空间的有机结合,是因为这个算法既能做到O(nlogn)时间赋值度的效率,又能借助外部的空间进行排序,因为只有数据比较的时候需要将数据存入到主机中进行,别的时候数据都可以存储在...原创 2020-04-02 16:14:33 · 167 阅读 · 0 评论 -
简单排序(C++)-- 数据结构与算法的游戏开始
简单排序数据结构与算法的盛宴从简单排序开始选择排序冒泡排序插入排序希尔排序插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入数据结构与算法的盛宴从简单排序开始 简单排序是排序算...原创 2020-03-15 11:08:27 · 230 阅读 · 0 评论