时间复杂度

时间复杂度

算法 解决问题的步骤, 解决问题的有限执行语句序列

什么好的算法??

耗时少,占用空间少的算法是好算法.

 算法时间评估前提:数据量相同, 算法的语句执行时间默认相同,最后评估算法的语句执行次数

常见的大O记法

常量阶:O(1)

线性阶:O(n)

平方阶:O(n^2)

指数阶:O(2^n)

对数阶O(log_2N)

线性对数阶O(Nlog_2N)

 

void  bubble1(int a[],int n)

{

  int i,j,temp

  for(i=1i<ni++)             // 2n+1

    for(j=0j<n-ij++)         // n-1 + n-2 + n- 3 + ... + 1 =                                     (n - 1 + 1)/2 = n/2   n^2/2

      if (a[j]>a[j+1])           //  n^2/2

        {

          temp=a[j];            //  

          a[j]=a[j+1];          //  

          a[j+1]=temp;          //  

       }

    

  for(i=0i<ni++)             // n

    printf(%d,a[i]);        // n

}

最好的情况  f(n) = 2n+1 + n^2 + 2n  T(n) = O(n^2)

最坏的情况  f(n) = 2n+1 + n^2/2 + 2n^2 + 2n T(n) = O(n^2)

posted @ 2020-09-04 11:47  特权E5  阅读(111)  评论(0编辑  收藏  举报