【数据结构入门】1.4.2算法与算法分析(持续更新ing)
算法与算法分析2
大一0基础 自学数据结构 手写笔记,希望大家支持哈哈
建议大家下点赞收藏 下载思维导图哦 看的清晰一点,内容更详细
一、算法的效率
- 时间效率:指算法所耗费的时间。
- 空间效率:指算法执行过程中耗费的存储空间。
- 时间与空间效率有时存在矛盾。
二、算法的时间效率度量
依据是算法编程的程序在计算机上执行所消耗的时间
- 事后统计:基于程序在计算机上的执行时间。
- (缺点:编写程序实现算法将花费较多的时间和精力;所得实验结果依赖计算机的软硬件等环境因素,掩盖算法本身的优劣)
- 事前分析:使用标号、项目符号等工具,无需实际运行。
三、事前分析方法
(一)基本假设
假设每条语句执行时间为单位时间,算法运行时间转化为语句频度之和(执行次数总和)。
算法运行时间 = 一个简单操作所需的时间 × 简单操作次数也即算法中每条语句的执行时间之和
算法运行时间 =(sum)每条语句的执行次数 × 该语句执行一次所需的时间
(二)时间消耗计算
- 矩阵相乘示例(代码及频度):
时间消耗:T (n)=2n³ + 3n² + 2n + 11 for(i=1;i<=n;i++) // n+1 次 2 for(j=1;j<=n;j++){ // n(n+1) 次 3 c[i][j]=0; // n² 次 4 for(k=0;k<n;k++) // n²(n+1) 次 5 c[i][j] += a[i][k]*b[k][j]; // n³ 次 6 }
(三)渐进时间复杂度(大“O”记号)
为了便于比较不同算法的时间效率,我们仅比较它们的数量级
若有某个辅助函数 f (n),使得当 n 趋近于无穷大时,T (n)/f (n) 的极限值为不等于零的常数,则称 f (n) 是 T (n) 的同数量级函数。
记作 T (n)=O (f (n)),
称 O (f (n)) 为算法的渐进时间复杂度(O 是数量级的符号),
简称时间复杂度。
对于求解矩阵相乘问题,算法耗费时间:
T (n)=2n³ + 3n² + 2n + 1
n → ∞时,T (n)/n³ → 2,这表示 n 充分大时,
T (n) 与 n³ 是同阶或同数量级,
引入大 “O” 记号,
则 T (n) 可记作:T (n)=O (n³)
算法中基本语句重复执行的次数是问题规模 n 的某个函数 f (n),
算法的时间量度记作:
T (n)=O (f (n))
算法中重复执行次数和算法的执行时间成正比的语句
对算法运行时间的贡献最大
执行次数最多
称作为基本语句
(四)基本语句特征
- 与执行时间成正比,对运行时间贡献最大,执行次数最多。
(五)问题规模与执行时间
- n增大,执行时间延长,具体场景:
- 排序:(n)为记录数。
- 矩阵:(n)为阶数。
- 多项式:(n)为项数。
- 集合:(n)为元素个数。
- 树:(n)为结点数。
- 图:(n)为顶点/边数。
如果对你有帮助,欢迎点赞收藏,你的支持是我持续创作的最大动力!
有什么问题欢迎指出交流,看到就会回复哈。


浙公网安备 33010602011771号