1. What is algorithm?
Informally, an algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. An algorithm is thus a sequence of computational steps that transform the input into the output.
由有限条指令构成,每条指令规定了计算机所要执行的有限的运算或操作
程序 = 数据结构 + 算法
2. Feature
- Finiteness 有穷性 有限步骤
- Definiteness 确切性 确切的定义
- Input 输入 0...N
- Output 输出 1...N
- Effectiveness 可行性 算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性
- multiplexing 复用 算法是可以处理处理一类问题的
3. Pseudocode 伪代码表示法
- 赋值语句
x <- y - 分支语句
if ...then...else - 循环语句
while
while do
for x to y
repeat until - 跳转语句
goto - 返回语句
return - 注释
//
4. Quantity
可读性,正确性,健壮性,高效性
5. Time complexity and Space complexity
时间复杂度:所花费时间的
空间复杂度:所花费空间的
6. Recurrence Equation
通过递推方程求解时间复杂度
- 迭代求解
T(n) = T(n-1) + n
T(1) = 1
T(n) = n^2
- Master theorem 主定理求解
主定理试用公式T(n) = aT(n/b) + f(n)
a:规约后的子问题个数
b:规约后子问题规模
f(n):规约过程及组合子问题的解工作量- IF f(n) = O(n^logb (a-ε)) THEN T(n) = O(n^logb (a))
- IF f(n) = Θ(n^logb(a)) THEN T(n) = O(n^logb (a) logn)
- IF f(n) = Ω(n^logb (a+ε)) THEN T(n) = Θ(f(n))