1. 什么是算法复杂度
算法复杂度是衡量一个算法在执行过程中的资源消耗量的指标。通常分为 时间复杂度 和 空间复杂度 两种:
- 时间复杂度:表示算法执行所需的时间。
- 空间复杂度:表示算法执行过程中所需的存储空间。
2. 大O表示法
大O表示法用于描述算法复杂度的上界,主要关注的是算法在输入规模很大时,性能的增长情况。
- O(1):常数时间复杂度,无论输入大小如何,算法总是执行相同数量的步骤。
- O(log n):对数时间复杂度,随着输入规模的增加,算法执行的步骤按对数关系增加。
- O(n):线性时间复杂度,算法执行的步骤与输入规模成正比。
- O(n log n):线性对数时间复杂度,比线性时间复杂度稍差一些,常见于一些高级排序算法。
- O(n^2):平方时间复杂度,步骤数量随着输入规模的平方增加,常见于一些简单的嵌套循环。
- O(2^n):指数时间复杂度,步骤数量随着输入规模的指数增长。
- O(n!):阶乘时间复杂度,极其低效的算法。