参考《算法设计技巧与分析》(沙特)阿苏外耶(Alsuwaiyel,M.H.)
就是做一个记录,这样感觉做题写代码的时候会更清晰 OwO
一 基本概念
时间空间复杂度。
log 2,lg 10,ln e
简单的二分搜索。O(logn)
排序:插入,选择 ,自底向上合并排序。
合并(merge)
log1+log2+...+logn=logn! =O(nlog(n))
1/1+1/2+...+1/n=O(logn)
n/1+n/2+...+n/n=O(nlogn)
由logn!=O(nlogn),log(2^n)=n,可知2^n=O(n!)
由log(2^n^2)=n^2,可知n!=O(2^n^2)
Σn/2^j (j 0-logn)=O(n)
二 数学预备知识
集合,关系,函数。对数,底函数顶函数,阶乘,二项式系数,鸽巢原理,递推
三 数据结构
链表,图,树,堆,不相交集数据结构
四 递归
如基数排序,整数幂,多项式求值(Horner规则),生成排列,寻找多数元素
五 分治
二分搜索,合并排序,寻找中项和,第k小,快速排序,大整数乘法,矩阵乘法,最近点对。
六 动态规划
最长公共子序列,矩阵链相乘,背包
七 贪心算法
最短路,最小生成树,破圈
八 图遍历
DFS,BFS
九 NP,计算复杂性,下界
十 回溯法
3,8着色。8皇后,分支界限法。
十一 随机算法,近似算法
十二 网络流
Ford-Fulkerson,Dinic,MPM,最大容量增值,最短路径增值
十三 匹配
网络流方法,匈牙利树,二分图...