代码准备: 归并排序 归并排序(Merging Sort) 就是利用归并的思想实现排序方法. 它的原理是假设初始序列含有n个记录,则可以看成n个有序的子序列. 每个子序列的⻓...
代码准备: 归并排序 归并排序(Merging Sort) 就是利用归并的思想实现排序方法. 它的原理是假设初始序列含有n个记录,则可以看成n个有序的子序列. 每个子序列的⻓...
排序可以分为2类: 内排序:是在排序整个过程中,待排序的所有记录全部被放置在内存中; 外排序:由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换...
平衡⼆叉树(Self-Balancing Binary Search Tree 或 Height-Balanced Binary Search Tree),是一 种二叉排序树...
一般的二叉树结构中会存在一些个别结点上的左指针或者右指针为空的情况,这种情况下就会存在浪费空间的情况存在,如下图: 我们可以利用这些空闲的结点来进行线索话,将空出来的左指针指...
查找表操作方式分为静态查找和动态查找。静态查找表(Static Search Table): 只作查找操作的查找表; 1.查询某个”特定的”数据元素是否在查找表中; 检索某个...
1、拓扑排序 有⼀个表示工程的有向图中, ⽤顶点表示活动, 用弧表示活动之间的优先关系,这样有向图为顶点表示活动的网. 我们称为AOV网(Activity On Vertex...
最短路径顾名思义就是两个点之间所需花费最短的那个路径。在算法中计算最短路径有两个比较著名的算法:Dijkstra算法和Floyd算法 1、Dijkstra算法 Dijkstr...
连通图的⽣生成树定义: 所谓⼀一个连通图的⽣生成树是⼀一个极⼩小的连通⼦子图,它含有图中全部的n个顶点,但只⾜足以构成⼀一颗树的n-1条边.定义解读: 满⾜足以下3个条件则为...
图的遍历可以分为:深度优先遍历和广度优先遍历 一、深度优先遍历 深度优先遍历的实现思路 将图的顶点和边信息输⼊入到图结构中; 创建⼀一个visited 数组,⽤用来标识顶点是...
一、图的一些定义 图:顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G=(V,E),其中G表示一个图,V是图G中的顶点的非空集合,E是图G的边的集合。 无向图 & ⽆无...
一、关于二叉树一些的概念 1.1树的相关概念 高度:指节点到叶子节点的最长边数 深度:指根节点到节点的边数 层:根节点的层定义为1,根节点的字节点为2,以此类推 1.2二叉树...
题目: 有一个主串S = {a, b, c, a, c, a, b, d, c}, 模式串T 式串在主串中第一次出现的位置;提示: 不需要考虑字符串大小写问题, 字符均为小写...
今天学习字符串匹配问题的算法题目的BF算法和RK算法。题目:有一个主串S = {a, b, c, a, c, a, b, d, c}, 模式串T = { a, b, d } ...
一、前言 1.做算法题的方法: 充分阅读题目.了解题目背后的关键意思; 分析题目,涉及到哪些数据结构,对问题进行分类. 到底属于链表问题, 栈思想问题, 字符串问题,二叉树问...
队列 与栈不同,他就是现实中排队一样,讲究先来后到,即 先进先出。 我们也可以使用顺序存储和链式存储来实现队列。 一、顺序存储循环队列 为了防止假溢出现象,在设计队列的时候需...
1、栈的结构 栈结构遵循先进后出的原则,进栈和出栈都从栈顶进行操作;我们可以用顺序存储和链式存储两种方式来实现栈。 2、顺序存储实现栈 2.1代码准备 2.2 构建一个空栈 ...
题目一、 将2个递增的有序链表合并为一个有序链表; 要求结果链表仍然使用两个链表的存储空间,不另外占用其他的存储空间. 表中不允许有重复的数据; 算法思想:(1)假设待合并的...
1.双向链表 双向链表的节点分为3个部分:前驱指针域、数据域和后继指针域,可以用下图表示: 前驱指针域:用于存储该节点上一个节点的存储地址; 数据域:用于存储该节点的数据 后...
1. 单向循环列表 单向循环链表最后一个结点是重新指向它的第一个首元结点的位置;可以用下图来表示: 2. 单向循环列表代码实现 2.1 代码准备 2.2 创建循环列表 创建循...
一、基础知识 数据结构常用术语:数据结构中最基本的5个概念: 数据,数据元素,数据项,数据对象,数据结构;数据结构@2x.png 1.1 数据数据: “是描述客观事物的符号,...