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

算法-时间复杂度和空间复杂度

作者: 一亩三分甜 | 来源:发表于2020-08-13 19:36 被阅读0次

Big O notation

O(1):Constant Complexity 常数复杂度
O(log n):Logarithmic Complexity 对数复杂度
O(n):Liner Complexity 线性时间复杂度
O(n^2):N square Complexity平方
O(n^3):N cubic Complexity立方
O(2^n):Exponential Growth指数
O(n!):Factorial阶乘
注意:只看最高复杂度的运算

O(1)

int n = 1000;
System.out.println("Hey-your input is:"+n)

O(?)

int n = 1000;
System.out.println("Hey-your input is:"+n);
System.out.println("Hmm.. I'm doing more stuff with:"+n);
System.out.println("And more:"+n);

O(N)

for(int i=1;i<=n;i++){
   System.out.println("Hey - I'm busy looking at:"+i);
}

O(N^2)

for(int i=1;i<=n;i++){
   for(int j=1;j<=n;j++){
     System.out.println("Hey - I'm busy looking at:"+i+"and"+j);
   }
}

O(log(n))

for(int i=1;i<n;i=i*2){
   System.out.println("Hey - I'm busy looking at:"+i);
}

O(k^n)

int fib(int n){
  if(n<2) return n;
  return fib(n-1)+fib(n-2);
}

方法一:从1到n的循环累加

y = 0;
for i = 1 to n:
y += i;

时间复杂度O(n)

方法二:求和公式sum=n(n+1)/2

y = n*(n+1)/2;

时间复杂度O(1):这段语句永远只执行一次

递归条件下分析时间复杂度

Fib:0,1,1,2,3,5,8,13,21,34, ...
F(n) = F(n-1) + F(n-2);

int fib(int n){
   int(n<2) return n;
   return fib(n-1) + fib(n-2);
}
时间复杂度O(2^n)

Master Theorem主定理

解决所有递归函数计怎么计算时间复杂度

Algorithm Recurrence relationship Run time
Binary search T(n)=T(n/2) + O(1) O(log^n)
Binary tree traversal T(n) = 2T(n/2) +O(1) O(n)
Optimal sorted matrix search 二维排序矩阵二分查找 T(n) = 2T(n/2) +O(log^n) O(n)
Merge sort 归并排序 T(n) = 2T(n/2)+O(n) O(nlog^n)

所有排序最优办法是nlog^n。

二叉树的前序,中序,后序遍历时间复杂度为O(n)。每个节点访问一次且仅访问一次,时间复杂度线性于二叉树的节点总数n。

图的遍历:时间复杂度是多少?O(n),每个节点访问一次且仅访问一次,节点总数为n。

搜索算法:DFS、BFS时间复杂度是多少?O(n),所有节点只访问一次,节点总数为n。

二分查找:时间复杂度是多少?log^n。

空间复杂度

1.数组的长度
2.递归的深度(特殊说明)

相关文章

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

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

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

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

  • NLP初学之-算法复杂度

    算法的复杂度分为:时间复杂度和空间复杂度。

  • 算法复杂度

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

  • 算法相关

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

  • 算法的复杂度

    算法复杂度分为时间复杂度和空间复杂度。时间复杂度是指执行算法所需要的计算工作量,而空间复杂度是指执行这个算法所需要...

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

    1、时间复杂度和空间复杂度的意义 算法的时间复杂度和空间复杂度就是一种对算法优劣进行衡量的标准,前者反映了算法的执...

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

    算法复杂度分为时间复杂度和空间复杂度 1、介绍 时间复杂度:执行这个算法所需要的计算工作量 空间复杂度:执行这个算...

  • 算法基础知识

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

  • 各种排序算法的时间与空间复杂度

    各种排序算法的时间复杂度和空间复杂度

网友评论

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

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