计算机算法分类及区别详解
算法的复杂度主要分为两种:时间复杂度 和 空间复杂度。
一、时间复杂度
定义:衡量算法运行所需的时间,或者说,它表示算法的执行时间随输入数据规模(通常用 n
表示)增长的变化趋势。
关键点:它度量的不是具体的秒数(因为这会因硬件、编程语言等因素而异),而是操作次数的增长量级。
大O表示法
我们通常使用大O表示法 来描述时间复杂度。它表示最坏情况下,算法运行时间的上界。
常见的时间复杂度(从低到高):
复杂度 | 名称 | 描述与例子 | 当 n 翻倍时 |
---|---|---|---|
O(1) | 常数时间 | 操作次数与输入规模无关。 例子:访问数组中的某个元素、哈希表的查找(平均情况)。 | 时间不变 |
O(log n) | 对数时间 | 随着输入规模增大,时间增长非常缓慢。通常是通过将问题分治来实现。 例子:二分查找、平衡二叉搜索树的操作。 | 时间几乎不变 |
O(n) | 线性时间 | 操作次数与输入 |