美文网首页
时间复杂度

时间复杂度

作者: test_java | 来源:发表于2017-10-23 11:34 被阅读0次

分析一个时间的复杂度,推导大O的阶

 1.用常数1取代运行时间中的所有加法常数
 2.在修改后的运行次数的函数中,只保存最高阶项
 3.如果最高阶项存在且不是1 ,则去除与这个项相乘的常数
 4.得到的最后结果就是大O阶

判断这个的时间复杂度

     int  i = 0 , n =  100;
     while(i < n){
      i = i *2;
}

由于2^x = n 得到 x = log(2)n ,所以这个循环的时间复杂度为O(logn).

  int i, j ;
  for(i = 0; i < n ; i++){
      function(1);
}
void function( int count){
    printf("%d", count);
}

函数体打印的这个参数,function 函数的时间复杂度是O(1) ,所以整体的时间复杂度就是O(n)

 void function(int count){
      int j ;
    for(j =count; j < n ; j++){
    printf("%d",j);
  }
}

function 的内部循环次数随count的增加(接近n)而减少, 算法的时间复杂度为O(n^2)

 n++;
 function(n);
for(i =0; i < n; i++){
    function(i);
}
for(i = 0; i < n ; i++){
    for( j = i; j < n; j++){
  printf("%d",j);
}
}
 void function(int count){
      int j ;
    for(j =count; j < n ; j++){
    printf("%d",j);
  }
}
例子 时间复杂度 术语
521314 O(1) 常数阶
3n+4 O(n) 线性阶
3n^2+4n+5 O(n^2) 平方阶
3log(2)n+4 O(logn) 对数阶
2n+3log(2)n+14 O(nlogn) nlogn阶
n3+2n2+4n+6 O(n^3) 立方阶
2^2 O(2^n) 指数阶

常用的时间复杂度耗费的时间从小到大是
O(1) < O(logn)<(n) <O(nlogn) < O(n^2) < O(n^3) <O(2^n)<O(n!)<O(n*n)

相关文章

  • 时间复杂度(下)

    时间复杂度知识点 最好时间复杂度 最坏时间复杂度 平均情况复杂度 均摊时间复杂度

  • day02 四种时间复杂度分析方法

    一、时间复杂度有哪几种? 最好时间复杂度 最坏时间复杂度 平均时间复杂度(概率) 均摊时间复杂度(特殊的平均时间复...

  • 数据结构与算法之美笔记——复杂度分析(下)

    摘要: 时间复杂度还可分为四种,分别是「最好时间复杂度」、「最坏时间复杂度」、「平均时间复杂度」和「均摊时间复杂度...

  • 算法学习笔记-浅析时间复杂度

    四种情况的维度: 最好情况时间复杂度 最坏情况时间复杂度 平均情况时间复杂度 均摊时间复杂度 最好时间复杂度 在最...

  • sort_algorithm

    排序方法 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性 复...

  • 归并排序图解

    平均时间复杂度:O(nlogn) 最佳时间复杂度:O(n) 最差时间复杂度:O(nlogn) 空间复杂度:O(n)...

  • 时间复杂度和空间复杂度笔记

    复杂度分析笔记 复杂度主要分为时间和空间复杂度 时间复杂度:算法(程序)执行的时间变化趋势 空间复杂度:算法(程序...

  • 归并排序 by Python

    最好时间复杂度:O(n*logn)最坏时间复杂度:O(n*logn)平均时间复杂度:O(n*logn)空间复杂度:...

  • day09-冒泡排序+优化

    排序算法(SortAlgorithm) 算法时间复杂度总结: 排序方法时间复杂度(平均)时间复杂度(最坏)时间复杂...

  • 时间复杂度和空间复杂度

    时间复杂度 如何理解算法时间复杂度 1.时间复杂度,表示形式为Big O notation 时间复杂度也可以理解为...

网友评论

      本文标题:时间复杂度

      本文链接:https://www.haomeiwen.com/subject/zemouxtx.html