本文主要介绍一些算法基础。内容参考自:算法基础简介 - OI Wiki (oi-wiki.org)
本文主要包括以下内容:算法复杂度,枚举,模拟,递归,动态规划,贪心,前缀和和差分。
算法复杂度
算法的时间复杂度可以看作基本操作的计数或估测,空间复杂度则可以看成算法所需要的空间。假设 n 为数据规模,那么算法的时间 or 空间复杂度都可以表示成 n 的一个函数 f(n) 。
考虑 n 足够大时,引入高阶,同阶,低阶无穷大的概念,那么有:
f(n)=Θ(g(n)),当且仅当 f(n) 与 g(n) 同阶;
f(n)=O(g(n)),当且仅当 f(n) 比 g(n) 低阶或同阶(确定了 f(n) 上界);
f(n)=Ω(g(n)),当且仅当 f(n) 比 g(n) 高阶或同阶(确定了 f(n) 下界);
f(n)=o(g(n)),当且仅当 f(n) 比 g(n) 低阶。
f(n)=ω(g(n)),当且仅当 f(n) 比 g(n) 高阶。