文章目录
一,算法
1,算法的定义
- 对特定问题求解方法和步骤的一种描述,他是指令的有限序列。其中每个指令表示一个或多个操作。
2,算法的描述
- 自然语言:英语,中文
- 流程图:传统流程图,NS流程图
- 伪代码(类语言):类C语言
3,算法与程序
- 算法是解决问题的一种方法或一个过程,考虑如何将输入转换为输出,一个问题可以拥有多种算法。
- 程序是用某种程序设计语言对算法的具体实现。
程序 = 数据结构 + 算法
– 数据结构通过算法实现操作
– 算法根据数据结构设计程序
4,算法的五大特性
- 有穷性
一个算法必须总是在执行有穷步骤之后结束,且每一步都在有穷时间内完成。 - 确定性
算法中每一条指令必须有确切含义,没有二义性,在任何条件下,只有唯一的一条执行路径,即对于相同输入只能得到相同输出。 - 可行性
算法是可执行的,算法描述的操作可以通过已经实现的基本操作执行有限次来实现。 - 输入
有零个或多个输入。 - 输出
有零个或多个输出。
5,算法的设计要求
- 正确性(Correctness)
– 对于精心选择的、典型的、苛刻且带有刁难性的几组输入数据均能的出满足要求的结果 - 可读性(Readability)
– 易于人的理解 - 健壮性(Robustness)
– 当输入非法数据时,做出且当反应 - 高效性(Efficiency)
– 花费时间小,尽量低的存储需求
二,渐进表示法(Asymptotic notation)
五种渐进表示方法
L:洛必达法则((L’ Hospital Rule)
渐进表示法的定义
asymptotic tight bound:渐近紧密界
Big-O(Upper bound of f(n))
以定义来说明范例
Omega(Lower bound of f(n))
以定义来说明范例
Theta (tight bound)
以定义来说明范例