数据结构:
数据对象在计算机中的组织方式
- 逻辑结构:一对一的结构,线性结构;一对多的结构,树形结构
- 物理的存储结构:有数组结构和链表结构
数据对象必然与一系列对加在其上的方法相关联
这些方法叫做算法
算法的定义:
- 有限指令集
- 算法输入(不是必须)
- 产生输出
- 在有限的步骤之后终止
- 每一条指令有充分明确的目标,不能有歧义;在计算机可以处理的范围之内;其描述不依赖计算机的语言和实现方法。
从两个维度评价一个算法的好坏
- 空间复杂度S(n):算法在执行时占用的存储单元的长度
- 时间复杂度T(n):算啊在执行时耗费的时间的长度
递归函数在执行时系统要保存N个函数的状态,空间复杂度为N
关注算法的效率会关注最坏的时间复杂度和平均时间复杂度
example 1
给定N个整数的序列{A0, A2, A3,...AN-1},求任意子序列的最大值。
int maxSubsequence(int *p; int len) {
int sumValue = 0;
int maxSum = 0;
for (int i = 0; i < len; i++) {
sumValue += p[i];
if (sumValue > maxSum) {
maxSum = sumValue;
} else if (sumValue < 0) {
sumValue = 0;
}
}
return maxSum;
}
上面算法采用的是在线处理的方式,其时间复杂度为N