算法的最初定义:
一组确定的,有效的,有限的解决问题的步骤
通常把解决问题的确定方法和有限步骤称为算法
对计算机科学而言,算法是对特定问题求解步骤的一种描述,是若干条指令的有穷序列
特性:
- 输入
- 输出
- 确定性
- 有限性
- 可行性
算法的描述方式:
- 自然语言
- 图形:流程图,N-S图,PAD图
- 程序设计语言:c++
- 伪代码
算法+数据结构=程序
算法是程序的灵魂
数据结构是算法设计的基础
算法设计的一般过程:
- 充分理解要解决的问题
- 数学模型拟制
- 算法详细设计
- 算法的描述
- 算法思路的正确性验证
- 算法分析
- 算法的计算机实现和测试
- 文档资料的编制
时间复杂性:
时间复杂性是对算法运行时间长短的度量,一般记为T(n)
度量的方法通常有两种:
- 事后统计法
- 事前分析估算发
空间复杂性:
空间复杂性是对一个算法在运行过程中所占用存储空间大小的度量一般记为S(n)
n是问题规模
相关的因素有:
- 存储算法本身所占用的存储空间
- 算法的输入输出数据所占用的存储空间
- 算法在运行过程中所需的辅助变量占用的存储空间,即辅助空间或临时空间
渐进复杂性态
1.渐进复杂性态的引入:
- 随着问题规模的增大,算法的时间复杂性主要取决于运行时间表达式的阶
2.渐进意义下的记号:
O,Ω
说明:
渐进上界记号O