算法的效率

  • 算法效率(Efficientcy)的分析,指的是算法求解的一个问题所需要的时间和空间
  • 时间资源和空间资源
  • 如何衡量时间资源?建例一个客观的计算模型
  • 计算模型(Turing 机、以及RAM(随机存储器))等
  • 算法时间资源的估算
    • 算法执行计算运行(或步数)的数目

度量一个算法运行时间的三种方式

  • 最好情况时间复杂符
  • 最坏情况时间复杂度
  • 平均情形时间复杂度

遇到最好时间和最快时间的原因在哪?
例如排序,最好时间是刚好给你排好的时间
最坏时间就是给你的数是一个倒序

算法的效率
每条语句都编了号,因为每一编号都是一条语句
算法的效率
对这个时间算法算每条语句执行的次数,但每条语句所执行的时间并不相等
例如第一条语句:for语句,第一步做赋值2给j,第二部就是要进行判断,是否小于等于n,之后全部执行完之后就是j++的操作
这个语句的长短跟第三行的语句是不一样的。
我们用一个常量来描述,为什么简化这个过程,因为算法的时间是跟我们n相关,其他的都是一些小系数

算法的效率
为什么是写成n,因为最大值是n+1,for语句进行的次数就是循环次数加上1
第二行、第三行,第七行都是简单的赋值语句,所以都是n-1次
算法的效率
内嵌的循环
i是里面的卡表,满足就循环,不满足就跳出循环
456执行语句的次数跟我们的n没有关系,但跟我们输入的顺序是有关的
算法的效率
第四行,j是有一个2到n的变量,所以就是tj,里面的次序就是tj-1, 因为没有办法确定所以我们就用一个变量来表述他

每条语句的时间跟他的次数相乘
算法的效率
算法的效率
最好情况下,456三行是没有执行的,所以最好情况是关于n的线性函数

最差情况是关于n的二次函数
算法的效率
算法的效率

算法的效率
插入排序和归并排序相比
归并排序更好

相关文章: