时间复杂度

时间复杂度

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

什么好的算法??

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

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

常见的大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)

学如逆水行舟,不进则退。 博客园技术交流群 群 号:1073255314 (本群没人,刚刚建立 -_-!!! )
原文地址:https://www.cnblogs.com/Mj-NaijAm/p/13612982.html