算法分析与设计
算法基础
选择排序
冒泡排序
顺序查找
凸包问题
穷举法
TSP(旅行商问题)<O(n)=n!>
背包<O(n)=2n>
分配<O(n)=n!>
深度优先搜索DFS 栈
邻接矩阵Θ(V2)
邻接表Θ(|V|+|E|)
广度优先搜索BFS 队列
邻接矩阵Θ(V2)
邻接表Θ(|V|+|E|)
蛮力法
减治法
转化为规模较小相同问题
增量法 小——>大
自顶向下:递归
自底向上:递推(迭代)
1、减常量
插入排序
拓扑排序
2、减常因子
二分查找<O(n)=log2n>
俄式乘法
eg:n*m=:n/2*2m(n为偶数)
(n-1)/2*2m+m(n为奇数)
3、减可变规模常量
最大公约数Euclid算法<O(log2n)>
插值查找<O(log2log2n)>
基于分区的选择问题<Θ(nlog2n)>
分治法
划分多个相同问题的较小实例
递归求解小实例
组合小实例解=>原解
归并排序<Θ(nlogn)>
快速排序<Θ(nlog2n)>
大整数乘法
Strassen矩阵乘法<传统O(n3),分治O(n2.81)>
二维最大点O<(n2)>
最近点对算法<O(nlogn)>
凸包算法<O(nlogn)>
棋盘覆盖
变治法
变换问题,便于后题求解
实例化简:实例变换为另一个更简单方便求解实例
预排序<Θ(nlogn)>
高斯消去法<Θ(n2)>
改变表示
变换问题的表达方式
AVL树<Θ(logn)>
2-3树<Θ(logn)>
堆<Θ(n)>
堆排序<Θ(nlog2n>
霍纳法则<Θ(n)>
问题归纳:变换为已有求解算法的另一个问题。(数学建模)
贪心算法
兑换硬币
用的面额越大,换的个数越少,剩余额越少
最小生成树
Prim
Kruskal
最短路径
单源单目标
单源多目标 Dijkstra
连续背包
单位价值di=Vi/Wi
(单会场)活动安排<Θ(nlogn)>
以结束时间越早
与动态规划相比高效,但不一定可以得到最优解,但动态规划(效率差)能得到
动态规划
搜索
回溯法
分支定界搜索
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)