数据结构学习笔记——时间复杂度预估

 引言

 一个算法的好坏通常是评估其运行时的 时间复杂度空间复杂度。算法的时间代价就是指算法执行时花费CPU的时间,与参与运算的数据量有关,通常很难事先计算得到。算法的时间效率指算法的执行时间随问题的增长而增长的趋势,通常采用时间复杂度来度量。
 算法时间复杂度的渐进表示通常用大O表示法,O表示法给出了函数f(x)的严格上限。其定义为:
 

预估指南

 一些通用规则通常能帮助我们确定一个算法的运行时间。
  1. 循环循环体的运行时间通常为循环体内语句的运行时间乘以循环次数
    //循环n次
    for(int i=0;i

    总时间=c*n=cn=O(n)

  2. 嵌套循环从内到外分析,时间是所有循环的乘积
    //外层循化n次
    for(int i=0;i
    总时间=
  3. 顺序执行语句:每一条语句的运算时间和
    k=1; //时间常数
    //执行n次
    for(i=1;i
    总时间=
  4. if-then-else条件语句:最坏情况下的运行时间等于条件判断时间+最大值(then语句部分运行时间或者else语句部分运行时间)
    if(length()==0)
       return false;
    else{
       for(k=1;k
    总时间=
  5. 对数级时间复杂度:通常会有变量倍增或者倍减的情况,此时时间复杂度为,底数有倍数决定
    for(int i=1;i
    总时间=(底数为2)=
注:本篇博客只是列举了通常见到的几种类型,还有一种特殊类型递归并没有提及,该类型会在后续类型中以独立的博客展开。


你可能感兴趣的:(数据结构学习笔记——时间复杂度预估)