数据结构和算法
数据结构和算法(第三次课)
算法和算法分析
- 最坏时间复杂度:最坏时间的时间复杂度;
- 平均时间复杂度:所有可能输入实例在等概率出现的情况下,算法的期望运行时间;
- 最好时间复杂度:最好情况下,算法的时间复杂度;
一般总是考虑最好时间复杂度
- 这样能保证算法的运行时间不会比它更长
- 加法规则
- 乘法规则
算法的复杂度比较
常熟阶<对数阶<线性阶<线性对数阶<平方阶<立方阶<…<k次方阶<指数阶
算法要占据的空间(空间复杂度)
- 算法本身要占据的空间,输入/输出,指令,常数,变量等
- 算法要使用的辅助空间
例子(将一位数组a中的n个数逆序存放到原数组中):
for(i=0;i<n/2;i++){
t = a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
} //原地工作
//对比:
for(i=0;i<n;i++){
b[i]=a[n-i-1];
}
for(i=0;i<n;i++){
a[i]=b[i];
}//S(n)=O(n)
设计好算法的过程
- 抽象数据类型 = 数据的逻辑结构+抽象运算(运算的功能描述)
浙公网安备 33010602011771号