美文网首页
算法时间复杂度

算法时间复杂度

作者: JohnsonZzzz | 来源:发表于2019-09-27 15:15 被阅读0次

算法时间复杂度可以认为就是代码需要循环的次数O(n)

例题
1.下面算法的时间复杂度是多少

for(int i=1;i<n;i=i*2){
  System.out.print(""+i);
}

我们可以从循环结束的条件开始入手
很明显是当i=n(或者i>n)时,这时候我们假设x次循环后达到条件,即i*2^x=n,
转换一下:2^x=n/i,
由于i的初始值是1,所以这里只要算出2^x=n中的表达式就是算法的时间复杂度,那就是
x=log(n)

2.下面算法的时间复杂度是多少

for(int i=1;i<Math.pow(2,n);i++){
  System.out.print(""+i);
}

Math.pow(int x ,int y);//输出x的y次幂也就是x^y
这里循环的终止条件就是i=2^n,所以,代码循环次数就是2^n,即算法的时间复杂度为O(2^n)

3.下面算法的时间复杂度是多少

for(int i=1;i<factorial(n);i++){
  System.out.print(""+i);
}

factorial(n)返回n的阶乘,所以终止条件就是i=n!,算法复杂度为O(n!)

4.递归算法时间复杂度
斐波那契数列1,1,2,3,5,8,13,21...
函数:f(n)=f(n-1)+f(n-2);
代码:

public int fun(int n){
  if(n==0||n==1){
    return n;
  }
  return fun(n-1)+fun(n-2);
}

暴力假设,第一次计算2次,第二次执行4次,第三次执行8次...第n次执行2^n次,所以总的计算次数是等比数列的前n项和的次数,数据公式Sn=(1-q^n)/(1-q),q为公比。所以,取最高次该归算法时间复杂度为O(q^n),这里q为2.即算法复杂度O(2^n)。
P·S:当高阶与低阶混合的时候,只取高阶的复杂度

常见类型算法时间复杂度: image.png

证明过程相当复杂,我也不清楚,有兴趣的同学可以去研究一下,我们应付面试只知道结果就好了
1.二叉树查找O(log n)
2.二叉遍历O(n)
3.排序的查找或者二维矩阵的查找O(n)
4.快排,归并排等O(n·log n)

相关文章

  • 算法相关

    算法复杂度相关概念:漫画:什么是时间复杂度?算法的时间复杂度和空间复杂度详解算法题库:力扣 一、排序算法 排序算法...

  • 算法复杂度

    算法复杂度 算法复杂度的目的:分析代码执行的时间成本。我们从五个方面来介绍算法复杂度:时间复杂度、时间复杂度分类、...

  • 算法基础知识

    算法的复杂度 算法的复杂度: 算法的时间复杂度和空间复杂度合称为算法的复杂度,一般不特别说明,讨论的时间复杂度均是...

  • day09-冒泡排序+优化

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

  • 算法复杂度

    算法的复杂度是以什么来度量的? 算法的复杂度是以时间复杂度和空间复杂度来计算的。 ①算法的时间复杂度 ...

  • 数据结构-0-时间复杂度和空间复杂度

    1. 算法的复杂度: 算法的复杂度分为时间复杂度和空间复杂度。时间复杂度,是衡量算法执行时间的长度;空间复杂度,是...

  • 最大子序列和问题的几种实现

    算法一,暴力法,时间复杂度O(n^3): 算法二,时间复杂度O(n^2): 算法三,在线处理,时间复杂度O(n):...

  • [转]时间复杂度和空间复杂度

    算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论...

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

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

  • 算法的时间复杂度和空间复杂度

    算法的时间复杂度和空间复杂度合称为算法的复杂度。 一、时间复杂度 1.时间频度 一个算法执行所耗费的时间,从理论上...

网友评论

      本文标题:算法时间复杂度

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