DC娱乐网

算法效率只看两件事: 时间效率(跑得多快) + 空间效率(占多少内存) 统一用

算法效率只看两件事:
时间效率(跑得多快) + 空间效率(占多少内存)
统一用 时间复杂度 / 空间复杂度 来评估。

 

一、核心标准:时间复杂度

1. 怎么表示?

用大 O 记法:O(...)
只看增长趋势,不看具体秒数。

2. 常见复杂度从快到慢

- O(1):常数时间
不管数据多少,一步搞定
例:数组取下标 a[5]
- O(log n):对数时间
数据翻倍,只多一步
例:二分查找
- O(n):线性时间
数据量多大,就跑多少次
例:遍历一遍数组
- O(n log n):线性对数
高效排序算法水平
例:快速排序、归并排序
- O(n²):平方时间
两层循环,数据大一点就炸
例:冒泡排序、选择排序
- O(2ⁿ) / O(n!):指数、阶乘
基本没法用在大数据上
例:暴力枚举全排列

3. 一句话判断

- 一层循环 → O(n)
- 两层嵌套循环 → O(n²)
- 每次砍一半 → O(log n)
- 排序基本都是 O(n log n)

 

二、空间复杂度

看额外占用内存随数据量的增长:

- O(1):原地操作,几乎不占额外空间
- O(n):开了一个同等大小数组/栈
- O(log n):递归二分这类

 

三、实际工程怎么评估?

1. 先看复杂度量级
O(n log n) 一定优于 O(n²)
2. 再看常数系数
同样 O(n),有的常数小跑得更快
3. 最好/最坏/平均情况
比如二分查找最坏 O(log n)
快排最坏 O(n²),平均 O(n log n)
4. 跑实测
压入大量数据,看耗时、CPU、内存

 

四、极简口诀

- 一步搞定:O(1)
- 砍一半查找:O(log n)
- 扫一遍:O(n)
- 高效排序:O(n log n)
- 两层循环:O(n²)
- 越靠左,算法越高效。

如果你愿意,我可以拿冒泡、快排、二分查找对比,给你看它们效率差在哪。