关于算法时间复杂度和空间复杂度的计算

1.程序在计算机上运行时所消耗的时间取决于下列因素
(1)算法采用的策略,方法
(2)编译产生的代码质量
(3)问题的输入规模
(4)机器执行指令的速度
2.时间复杂度
(1)时间频度:T(n),一个算法中的语句执行次数称为语句频度或时间频度,n作为问题的规模
(2)时间复杂度:若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常熟,则称f(n)是T(n)的同量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度
3.求解算法的时间复杂度的步骤
(1)找出算法中的基本语句:算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体
(2)计算基本语句的执行次数的数量级:只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率
(3)用大O记号表示算法 的时间性能: 如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:

for (i=1; i<=n; i++) 
    x++; 
for (i=1; i<=n; i++) 
   for (j=1; j<=n; j++) 
      x++; 


  第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n2),则整个算法的时间复杂度为Ο(n+n2)=Ο(n2)。 Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。

posted @ 2020-04-09 17:30  青样儿  阅读(304)  评论(0)    收藏  举报