时间空间复杂度详解

什么是复杂度

  • 程序执行时需要的计算量和内存空间(和代码是否简介无关系)
  • 复杂度是数量级, 不是具体的数字
  • 一般针对一个具体的算法,而非一个完整的系统

复杂度有如下几种

  • O(1) 可数的数量级
  • O(logn) 随着计算量越大 时间越平缓
  • O(n) 输入两怎加 复杂度也增加
  • O(nlogn) 随着输入量增大,复杂度明显增大 也就是 第二种乘以第三种
  • O(n^2) 输入量增大, 复杂度指数级增长

时间复杂度

下面是几种复杂度的对应的代码帮助理解

O(1)

function fn (obj={}, key) {
  return onj[key]
}

O(n)

function fn (list = []) {
  for (let i=0; i<list.length;i++) {
    console.log(list[i])
  }
}

O(n^2)

function fn (list = []) {
  for (let i=0; i<list.length;i++) {
    for (let j=0; j<list.length;j++) {
      console.log(list[j])
    }
  }
}

O(logn)

二分

O(nlogn)

一次循环 嵌套一个二分

空间复杂度

常用的是三个 没有 log

O(1)

function fn (arr=[]) {
  let a = arr[1]
  let b = arr[2]
}

O(n)

function fn (arr=[]) {
  const arr2 = []
  for (let i=0; i<arr.length;i++) {
    arr2[i] = arr[i]
  }
}

2周刷完100道前端优质面试真题 更多视频及资料领取请关注公众号:奋斗的刚子
欢迎体验我的小程序

posted on 2023-02-11 09:19  不锈钢子  阅读(66)  评论(0编辑  收藏  举报