时间复杂度

分析一个时间的复杂度,推导大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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 声明:该文章中内容为《大话数据机构》一书中的内容 1 函数的渐近增长 我们现在来判断一下,两个算法A和B哪个更好。...
    mm_cuckoo阅读 5,169评论 0 13
  • 算法复杂度 时间复杂度 空间复杂度 什么是时间复杂度 算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗...
    KODIE阅读 8,564评论 0 9
  • 0,时间复杂度是指执行算法所需要的计算工作量 1,在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语...
    Santiagogogo阅读 4,383评论 0 4
  • 1. 算法复杂度初认 你循环的次数写成 n 的表达式,就是时间复杂度 你申请的变量数量写成 n 的表达式,就是空间...
    谁动了MyWorld阅读 9,622评论 0 11
  • 红眼醉于酒绿 花光所有力气挤出高兴 全城都为我的分手布景 传说中 倾城的眼泪最痴情 浮世繁影也不过如此 华灯谢了 ...
    好奇是病阅读 1,517评论 3 1

友情链接更多精彩内容