【数据结构入门】1.4.4算法与算法分析(持续更新ing)(算法的时间复杂度2)
算法与算法分析
数据结构 手写笔记+思维导图资源,希望大家支持哈哈
建议大家下点赞收藏 pc端下载思维导图哦 看的清晰一点,内容更详细
算法时间复杂度
- 基本情况:算法中基本操作重复次数随数据集输入不同而不同。
-
顺序查找示例:
- 代码:
for (i=0;i< n;i++) if (a[i]==e) return i+1; // 找到返回位置 return 0; - 最好情况:1次
- 最坏情况:$n$
- 平均时间复杂度:$O(n)$
- 代码:
-
时间复杂度定义:
- 最坏时间复杂度:最坏情况下的时间复杂度。
- 平均时间复杂度:等概率输入下的期望运行时间。
- 最好时间复杂度:最好情况下的时间复杂度。
- 一般考虑最坏情况,保证运行时间上界。
-
计算法则:
- 加法规则:
$$T(n) = T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(\max(f(n), g(n)))$$ - 乘法规则(嵌套循环):
$$T(n) = T1(n) \times T2(n) = O(f(n)) \times O(g(n)) = O(f(n) \times g(n))$$
- 加法规则:
-
n很大时的差异:
![在这里插入图片描述]()
![在这里插入图片描述]()
-
渐进空间复杂度
-
空间复杂度定义:
-
算法所需要存储空间的度
$$记作:S(n) = O(f(n))$$($n$为问题规模) -
算法占据的空间:
- 自身空间:输入/输出、指令、变量等。
- 辅助空间:算法使用的额外空间。
-
举例:
-
算法1(原地逆序):
for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-i-1]; a[n-i-1]=t; }空间复杂度:$S(n) = O(1)$(常数空间)
-
算法2(额外数组逆序):
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号