时间复杂度计算

算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号 ),简称时间复杂度。
计算步骤可以分解为:

  1. 找到执行次数最多的语句
  2. 计算语句执行次数的数量级
  3. 用大O来表示结果

一、O(n)

function getSum (n) {
  let sum = 0;
  for(let i = 0; i <= n; i++) {
    sum += i;
   }
return sum;
}

只有可运行的语句才会增加时间复杂度,因此,上面方法里的内容除了循环之外,其余的可运行语句的复杂度都是O(1)。
时间复杂度 = for的O(n)+O(1) = 忽略常量 = O(n)。

二、O(log2n)

function makeDouble(n) {
  let i= 1;
  while(i<n){
    i = i*2;
  }
  return i;
}

设while循环里面的频度为t,2^t(2的t次方)<=n; 两边去对数t<=log2n,考虑最坏情况,取最大值t=log2n。
T(n) = O(log2n)。
排序算法的复杂度可以参见排序算法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容