常见的数量级大小:O(1)<O(logn)<O(n)<O(nlogn)<O( n2 )<O( n3 )<O( 2n )<O(n!)
数量级 | 能承受的大致规模 | 常见算法 |
---|---|---|
O(1) | 任意 | 直接输出结果 |
O(logn) | 任意 | 二分查找、快速幂 |
O(n) | 以百万计(五六百万) | 贪心算法、扫描和遍历 |
O(nlogn) | 以十万计(三四十万) | 带有分治思想的算法,如二分法 |
O( n2 ) | 以千计数(两千) | 枚举、动态规划 |
O( n3 ) | 不到两百 | 动态规划 |
O( 2n ) | 24 | 搜索 |
O(n!) | 10 | 产生全排列 |
O( nn ) | 8 | 暴力法破解密码 |
O(1)叫常数时间;O(n)、O(n2)、O(n3)、O(n4)……叫做多项式时间;O(2n)、O(3n)……叫做指数时间。