前端算法

55 阅读1分钟

1.复杂度

时间复杂度 空间复杂度

更短时间 更短空间

o(n)算法所执行的时间 规模

时间复杂度

不是代码真正的时间

随着数据的增长所消耗时间表达的趋势

// o (1)
const fnA = () => {
  console.log("hello world");
  return 1;
};

// o(n)
const fnB = () => {
  for (let i = 0; i < n; i++) {
    // 执行n+1次
    console.log("hello world"); // n
  }
  return 1; // 1
};

// o(n^2)
const fnC = () => {
  for (let i = 1; i < n; i++) {
    // n
    for (let j = 1; j < n; j++) {
      // n * n
      console.log("hello world"); // n * n
    }
  }

  return 1;
};

// o(logN)
const fnD = () => { 
  // log(2^n)
  let i = 1;
  while (i < n) {
    i *= 2;
  }
};

拓展细分时间复杂度的种类

  1. 最好情况下的时间复杂度

  2. 最坏情况下的时间复杂度

  3. 平均情况下的时间复杂度(加权)

  4. 均摊时间复杂度(高复杂度->低复杂度)

总结

  1. 时间复杂度:量级最大的部分

  2. 嵌套 循环 递归

  3. o(1)、o(logN)、o(NogN)、o(N^2)、o(N^3)

  4. 空间复杂度

随着数据的增长所消耗空间的表达的趋势