我的第一本算法书 第二、三、四(部分)章节
第2章 排序
2.1 什么是排序
将输入的数字按照从小到大的顺序进行排列
2.2 冒泡排序
- 从右开始, 两两比较. 逐渐将最小值移动到最左侧
- 再从最左侧逐步往左移动, 直至所有数字均完成排序
- 时间复杂度 O(n²), 比较n²/2次
2.3 选择排序
- 直接寻找最小值, 然后将最小值直接与最左侧数字交换
- 重复查找最小值再与左侧交换的过程直至完成排序
- 时间复杂度 O(n²), 比较n²/2次
2.4 插入排序
- 完成排序的数据放在左侧, 右侧为尚未排序的数据
- 排序时, 将右侧数据取出未排序的数据并在左侧插入排序, 直至排序完成
- 时间复杂度 O(n²)
2.5 堆排序
- 利用数据结构中的堆
- 在堆中存储所有数据, 并将数据按降序构成堆
- 将堆中取出的数据反序输出, 排序完成
- 时间复杂度 O(nlogn)
2.6 归并排序
- 将序列分为两个长度相同的子序列, 当无法继续分开时, 对子序列进行归并
- 归并即将排好序的子序列合并成一个有序序列
- 时间复杂度 O(nlogn)
2.7 快速排序
- 序列中随机选择 基准值(pivot) 将其他数据划分为 "小于基准值"和"大于基准值"
- 完成划分后, 将基准值插回原位置, 然后再将划分好的两段数据进行排序
- 时间复杂度 O(nlogn)
第3章 数组的查找
3.1 线性查找
- 在数组中从头开始依次查询
- 时间复杂度 O(n)
3.2 二分查找
- 只能查找已经排好序的数据, 比较一次把查找范围缩小一半, 多次重复即可
- 时间复杂度 O(logn)
第4章 图的搜索
4.1 什么是图
-
图中 圆圈"顶点" 连接顶线的线"边". 由顶点和链接每对顶点的边构成的图形就是图
-
图可以用于表示
- 人际关系
- 地铁路线
- 网络链接状况
-
加权图:在图上给边加一个值
-
有向图:表示该路线只能单向
-
使用场景
- 寻找计算机通信时间最短路线
- 寻找路线图中耗时最短的路径
- 寻找路线图中最省车费的路径
4.2 广度优先搜索
- 从起点开始搜索直至到达终点 搜索图的算法
- 从某个顶点开始搜索, 优先搜索距离起点近的顶点
- 从起点开始由近及远进行广泛的搜索
候补顶点使用 先入先出 可以使用队列
闭环
4.3 深度优先搜索
- 从起点开始搜索直至到达终点 搜索图的算法
- 沿着一条路径不断探索直至无法继续, 再折返 开始搜索下一条候补路径
候补顶点使用 后入后出 可以使用栈
区别:广度优先选择最早啊成为候补的顶点; 深度优先选择最新成为候补的顶点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?