数据结构与算法
文章平均质量分 70
数据结构与算法学习笔记
ClimberCoding
基础不牢,地动山摇…
展开
-
二叉堆详解实现优先级队列
记录,不错的讲解 labuladong的算法小抄原创 2021-10-06 16:19:17 · 149 阅读 · 0 评论 -
递归、迭代和分治法
转自递归、迭代和分治法一、递归算法:直接或间接地调用自身的算法。1、使用递归要注意的有两点:递归就是在过程或函数里面调用自身;在使用递归时,必须有一个明确的递归结束条件,称为递归出口.2、递归分为两个阶段:递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;回归:当获得最简单的情况后,逐步返回,依次得到复杂的解.利用递归可以解决很多问题:如背包问题,汉诺塔问题,...等.3、优缺点优点:结构清晰,可读性强,且容易用数学归纳法证明算法的正确性。缺点:(1) 递归算法需转载 2021-09-16 08:56:26 · 328 阅读 · 0 评论 -
如何合并两个有序链表?
如何 合并两个有序链表 ?假设链表 a 和 b 的长度都是 n,要在 O(n) 的时间代价以及 O(1) 的空间代价完成合并。我们的宗旨是 [原地调整链表元素的 next 指针完成合并]。首先需要一个变量 head 来保存合并之后链表的头部,可以将 head 设置为一个虚拟的头(方便代码的书写),在整个链表合并完之后,返回它的下一位置。需要一个一直变化的指针 tail 来记录下一插入位置的前一位置,以及两个指针 aPtr 和 bPtr 记录 a 和 b 未合并部分的第一位。当 aPtr 和 bPt原创 2021-05-27 16:26:23 · 444 阅读 · 0 评论 -
深度优先遍历和广度优先遍历代码实现
图代码主要参考:https://blog.csdn.net/weixin_40953222/article/details/80544928?spm=1001.2014.3001.55011. 什么是图表示 “多对多” 的关系包含:1. 一组顶点:通常用V(vertex) 表示顶点集合;2. 一组边:通常用E(edge) 表示边的集合。边是定点对:(v, w)∈E,其中v, w∈V有向边<v, w> 表示从 v 指向 w 的边(单行边)表示方法邻接矩阵表示法好原创 2021-05-22 22:46:28 · 2520 阅读 · 0 评论 -
散列表(哈希表)
散列表知识点讲解可直接点击这里【问题】如何快速搜索到需要的关键词?如果关键词不方便比较怎么办?查找的本质:已知对象找位置有序安排对象:全序、半序直接 “算出” 对象位置:散列散列查找法的两项基本工作:计算位置:构造散列函数确定关键词存储位置解决冲突:应用某种策略解决多个关键词位置相同的问题时间复杂度几乎是常数:O(1) ,即查找时间与问题规模无关!1. 什么是散列函数装填因子(Loading Factor):设散列表空间大小为m,填入表中元素个数是n,则称α = n / m 为原创 2021-05-21 22:28:12 · 1806 阅读 · 0 评论 -
堆
堆1. 什么是堆引:优先队列:特殊的“队列”,取出元素的顺序是依照元素的**优先权(关键字)**大小,而不是元素进入队列后的先后顺序。若采用数组或链表实现优先队列是否可以采用二叉树的存储结构?不能用二叉搜索树:如果每次删除最大,最后会变为一颗斜树堆!堆是一种常用的树形结构,是一种特殊的完全二叉树,当且仅当满足所有节点的值总是不大于或不小于其父节点的值的完全二叉树被称之为堆。堆的两个特性结构性:用数组表示的完全二叉树有序性:任一结点的关键字是其子树所有结点的最大值(或最小值)原创 2021-05-21 16:42:22 · 415 阅读 · 0 评论 -
平衡二叉树(AVL树)
参考:月雲之霄 https://blog.csdn.net/isunbin/article/details/81707606salt.Zhang https://blog.csdn.net/qq_34930032/article/details/105551355五分钟学算法 https://mp.weixin.qq.com/s/AweeCscNoLM2kKRA6Q_U8A平衡二叉树平衡二叉树首先具备了二叉搜索树的特性,因为二叉搜索树并未对树的高做限制,只要求了左小右大,这就可能在极端情况下,出现原创 2021-05-17 23:18:10 · 822 阅读 · 0 评论 -
二叉搜索树(二叉排序树)
二叉搜索树参考:https://blog.csdn.net/qq_35644234/article/details/64516551(这位大佬真的强啊,很喜欢他的风格)4.1 二叉搜索树定义二叉搜索树(BST,Binary Search Tree),也称为二叉查找树或二叉排序树二叉搜索树:一颗二叉树,可以为空;如果不为空,满足以下性质:非空左子树的所有键值小于其根结点的键值非空右子树的所有键值大于其根结点的键值左、右子树都是二叉搜索树二叉排序树通常采用二叉链表作为存储结构。中序遍历二叉原创 2021-05-17 19:48:44 · 350 阅读 · 0 评论 -
二叉树基本操作
参考:https://blog.csdn.net/hellowd123/article/details/99692395https://blog.csdn.net/qq_35644234/article/details/53013738第五章 树树——“分层次组织在管理上具有更高的效率!”1. 引:查找(没啥用,直接跳过)根据某个给定 关键字K,从 集合R中找出关键字与 K相同的记录静态查找:集合中记录是固定的没有插入和删除操作,只有查找动态查找:集合中记录是动态变化的除查找,还原创 2021-05-17 00:28:20 · 308 阅读 · 0 评论 -
经典排序算法
排序算法下面主要实现了几个常见排序算法,只有代码没有分析,分析可参考如下:十大经典排序:https://blog.csdn.net/weixin_41190227/article/details/86600821?spm=1001.2014.3001.5502快速排序:https://blog.csdn.net/nrsc272420199/article/details/825879331.如何写算法程序由简单到复杂验证一步一步走多打印中间结果先局部后整体没思路时先细分先粗原创 2021-05-18 22:42:29 · 106 阅读 · 0 评论 -
线性表、栈、队列
参考:https://blog.csdn.net/qq_35644234/category_6521704.html浙江大学《数据结构》网课浙大-数据结构:第一章 绪论什么是数据结构?解决问题方法的效率,跟数据的组织方式有关解决问题方法的效率,跟空间的利用效率有关解决问题方法的效率,跟算法的巧妙程度有关什么是算法?一个有限指令集接受一些输入(有的情况不需要输入)产生输出一定在有限步骤后终止每一条指令必须:有充分明确的目标,不可以有歧义计算机能处理的范围之内描述应不依赖原创 2021-05-14 22:32:45 · 174 阅读 · 0 评论