一、常见的几种复杂度和时间的关系:

image.png

  1. //O(n)的时间复杂度
  2. for(let i = 0;i<n;i++){}
  1. //O(logn)的时间复杂度
  2. for(let i = 0;i<n;i++){
  3. i=i*2;
  4. }
  1. //O(nlogn)的时间复杂度
  2. for(let j = 0;j<n;j++){
  3. for(let i = 0;i<n;i++){
  4. i=i*2;
  5. }
  6. }
  1. //O(n平方)的时间复杂度
  2. for(let i=0;i<n;i++){
  3. for(let j=0;j<n;j++){
  4. //...
  5. }
  6. }

二、最好、最坏、平均、均摊时间复杂度

1、最好情况时间复杂度
就是,在最理想的情况下,执行这段代码的时间复杂度。就像我们刚刚讲到的,在最理想的情况下,要查找的变量 x 正好是数组的第一个元素,这个时候对应的时间复杂度就是最好情况时间复杂度。
2、同理,最坏情况时间复杂度就是,在最糟糕的情况下,执行这段代码的时间复杂度。就像刚举的那个例子,如果数组中没有要查找的变量 x,我们需要把整个数组都遍历一遍才行,所以这种最糟糕情况下对应的时间复杂度就是最坏情况时间复杂度。