1. 核心定义
时间复杂度采用大 O 表示法,描述算法执行次数随输入数据量增长的变化趋势;只保留最高次项,忽略常数、低次项。
2. 基础复杂度对照
1.y=ax+b 一次函数 简化趋势 y=n→ {O(n)}
线性复杂度;执行次数随数据量线性增长。
示例:单层 for 循环遍历数组
2.y=ax^2+bx+c二次函数 简化趋势 y=n^2 →O(n^2)
平方复杂度;执行次数随数据量平方增长。
示例:两层嵌套 for 循环
3.y=a 常数函数 趋势与数据量无关 → {O(1)}常数复杂度;
无论输入多大,代码执行次数固定不变。
示例:数组随机下标取值、简单四则运算
4.y=loga x对数函数 → O(log n) 对数复杂度;
数据量成倍增加时,执行次数只少量增加。
示例:二分查找
3. 效率排序(由快→慢)

4. 推导规则
- 剔除常数系数与低次项
- 并列循环:复杂度相加
- 嵌套循环:复杂度相乘
| 复杂度 | 名称 | 典型场景 |
|---|---|---|
| O(1) | 常数级 | 随机访问、基础运算 |
| O(logn) | 对数级 | 二分查找 |
| O(n) | 线性级 | 单层循环遍历 |
| O(nlogn) | 线性对数级 | 快速排序、归并排序 |
| O(n²) | 平方级 | 双层嵌套循环、冒泡排序 |