【数据结构入门】1.4.2算法与算法分析(持续更新ing)

算法与算法分析2

大一0基础 自学数据结构 手写笔记,希望大家支持哈哈
建议大家下点赞收藏 下载思维导图哦 看的清晰一点,内容更详细

一、算法的效率

  • 时间效率:指算法所耗费的时间。
  • 空间效率:指算法执行过程中耗费的存储空间。
  • 时间与空间效率有时存在矛盾。

二、算法的时间效率度量

依据是算法编程的程序在计算机上执行所消耗的时间

  • 事后统计:基于程序在计算机上的执行时间。
  • (缺点:编写程序实现算法将花费较多的时间和精力;所得实验结果依赖计算机的软硬件等环境因素,掩盖算法本身的优劣)
  • 事前分析:使用标号、项目符号等工具,无需实际运行。

三、事前分析方法

(一)基本假设

假设每条语句执行时间为单位时间,算法运行时间转化为语句频度之和(执行次数总和)。
算法运行时间 = 一个简单操作所需的时间 × 简单操作次数也即算法中每条语句的执行时间之和
算法运行时间 =(sum)每条语句的执行次数 × 该语句执行一次所需的时间

(二)时间消耗计算

  • 矩阵相乘示例(代码及频度):
    1 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     }  
    
    时间消耗:T (n)=2n³ + 3n² + 2n + 1

(三)渐进时间复杂度(大“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)为顶点/边数。

如果对你有帮助,欢迎点赞收藏,你的支持是我持续创作的最大动力!
有什么问题欢迎指出交流,看到就会回复哈。
在这里插入图片描述

posted @ 2025-05-18 21:07  deepcyc  阅读(8)  评论(0)    收藏  举报