一、抽象数据类型 (Abstract Data Type)
1. 数据类型
- 数据对象集
- 数据集合相关联的操作集
2.抽象:描述数据类型的方法不依赖于具体实现
- 与存放数据的机器无关
- 与数据存储的物理结构无关
- 与实现操作的算法和编程语言均无关
二、算法(Algorithm)
- 一个有限的指令集
- 接受一些输入(有些情况下不需要输入)
- 产生输出
- 一定在有限步骤后终止
- 每一条指令必须
有充分明确的目标,不可以有歧义
计算机能处理的范围之内
描述应不依赖于任何一种计算机语言以及具体的实现手段
三、算法的复杂度
- 空间复杂度S(n): 根据算法写成的程序在执行时占用储存单元的长度。
- 时间复杂度T(n): 根据算法写成的程序在执行时消耗时间的长度。(另: 若一个算法的时间复杂度为n2,应想办法将其降为nlog(n))
四、应用实例:最大子列和问题
算法1: T(n) = O(n3)
int maxSubseqSum1(int arr[], int n) // 算法1, T(n) = O(n^3)
{
int maxSum{
}, thisSum; // thisSum表示当前求得的子列和
for (int i{
}; i< n; i++) {
// i表示子列左端
for (int j{
i}; j< n; j++) {
// j表示子列右端
thisSum = 0;
for (int k{
i}; k <=j; k++) {
thisSum += arr[k];
}
if (this