美文网首页
时间复杂度&空间复杂度

时间复杂度&空间复杂度

作者: 奋斗的韭菜汪 | 来源:发表于2020-09-09 09:35 被阅读0次

Trade-off 权衡(空间时间的权衡,时间换空间,空间换时间)
如何分析一个算法的时间复杂度:
1、通过程序去运行
2、关注循环次数最多的那段代码

//时间复杂度为n
int n=10;
for(int i = 0; i <n; i++ ){
...
}
//时间复杂度n*2;2n,时间复杂度不考虑系数也就是n
int n=10;
for(int i = 0; i <n; i++ ){
  for(int j=0; j<2; j++){
...
  }
}
//若上段代码和下段代码在同一段程序代码内,可以关注上一段的时间复杂度,因为上一段的循环次数没有下段代码多,时间复杂度为n^2
for(int i = 0; i <n; i++ ){
  for(int j=0; j<n; j++){
...
  }
}

常见数据结构的时间复杂度
O(1) -> HashMap
O(logn) ->二叉树
O(n) -> for循环
O(nlogn) ->for循环嵌套二叉树
O(n^2) -> for循环嵌套for循环
...

空间复杂度(开辟空间的趋势)

//空间复杂度O(n)
int[]  m = new int[n];
for (int i =0; i < n; i++){
}
//空间复杂度为n^2
int[][] n = new int[n][n];
for (int i =0; i < n; i++){
}

常见的复杂度大小排序
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3)... < O(2^n) < O(n!)

相关文章

网友评论

      本文标题:时间复杂度&空间复杂度

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