简介
算法是解决问题的方法,通常一个问题会有多种解决方法,就是有多种算法,那么我们如何决定哪个算法更好或者更高效呢?
为了描述一个算法的效率,就用到了这个大O,包括:
1、 O(n) 线性时间操作
2、 O(1) 常数时间操作
3、 O(log n) 对数时间操作
例如在 Redis 的文档中,对每个命令都会给出复杂度描述
明白大O的作用有助于我们提高程序的效率,下面看看他们的具体含义
O(n) 线性时间操作
假设有一个盒子,其中有多个印着数字的卡片(例如 1, 2, 3, 4, … 16)
现在我们被要求找出数字6的卡片,应该怎么做?
一次拿出一个卡片,看数字是否为6,如果符合,那就结束了,否则继续查看下一个卡片,最坏的情况是所有卡片都被检查了一遍
这种方式就是线性操作,记为 O(n)
O(1) 常数时间操作
假设有一个盒子,其中有数字(1, 2, 3, 4, … 1