大O表示法

171 阅读1分钟

大O 表示法——用于表示空间复杂度与时间复杂度

本文主要以执行步数演示时间复杂度,不涉及空间复杂度

一、时间复杂度大致可以分为以下几个级别:(N为输入的规模或者数量)

  • 1、O(1):常数级别,无论输入多大,步数恒定,例如hash表的查找;
  • 2、O(N):线性级别的,输入和步数正相关,例如遍历算法;
  • 3、O(logN):对数级别,即输入每变大一倍,耗费步数+1,例如二分法;
    • 解释:对数中的底数为2,默认省略,即2的m次方为输入N,则需要耗费的步数为m次。
  • 4、O(N * logN),例如快速排序(业界俗称快排);
  • 5、O(N²):平方级别,随着输入的变大所耗费的步数会成倍增加,例如双层for循环;
  • 6、立方级别等等

!!!注意:

  • 1、常数在大O表示法中会被忽略,例如常数级别中需要好几步(5步或者10步),表示仍然为O(1);而线性级别的也都表示为O(N);
  • 2、大O表示法不像数学一样准确,会因为输入的方式不同而需要不一样的步数(即时间复杂度),一般取耗费时间较多的那种(最坏情况)。