《数据结构》学习总结与归纳(后30%)

六.图论

1. 基本概念

无向完全图、有向完全图、(强/非/非强)连通图

极小连通子图:任意删除一条边,不再连通

生成树:包含无向图所有顶点的极小连通子图

2.遍历

dfs:一次走到顶->回退->走到顶->回退->...没有未走过的点

bfs:一次遍历一层->遍历下一层->...->遍历完所有层

数据结构用struct{}定义

3.邻接矩阵、邻接表

邻接矩阵的空间复杂度更高,实现较容易

4.最小生成树

算法:Prim算法、Kruskal算法

①Prim算法

核心思想:以点为基本单位,初始将某个节点加入可到达集合中,每次选出当前点的最小边并将边的另一顶点作为当前节点(边的另一个顶点不在可到达集合中),直到所有顶点都加入到可到达集合中,即算法完毕。

②Kruskal算法

核心思想:以边为基本单位,每次在所有边中寻找未连通的点构成的边且权值最小的,最终所有点连通表示算法完毕。

5.拓扑排序

排序要求:先决条件必须在前面。(先修课需要在前面)

关键路径AOE:源点到收点的最大路径。

七.查找(数组)

1.顺序查找

2.折半查找(二分)

要求:有序

3.分块查找

要求:块间有序

4.哈希表

核心:以空间换时间

关键点:映射函数、冲突的发生和解决

5.排序树

(1)二叉排序树

所有节点值大小满足:左节点<根<右节点

中序遍历可实现递增输出

(2)平衡二叉树

左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树

八.排序

(若数组长度为n)

1.直接插入排序

2.折半插入排序(二分)

要求:有序

3.冒泡排序

核心:每次从左至右遍历,若发现二者大小与顺序不符,调换,直至一轮中不再变化(使用flag记录)(或不使用变量记录,n-1轮可确保排序完成)

4.堆排序

共n个节点

实质:模拟具有特殊性质的完全二叉树

核心过程:建初堆->得到堆顶->调整堆->得到堆顶->...(n-1次)

分为:大根堆(堆顶最大值)、小根堆(堆顶最小值)

调整堆:从n/2的下界(最后一个具有子节点的结点)开始,从右至左,从下至上,若某节点值不符合节点值>左右节点值(大根堆) or  节点值<左右节点值(小根堆),则调换顺序(根和子节点中较大/小的结点调换)

得到堆顶:堆顶值为min or max,将其放到末尾。

5.归并排序(分治)

划分->排序->归并->排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rebegin_2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值