时间复杂度
时间复杂度是决定一个算法好坏的重要指标。一个算法的好坏通常从算法的正确性、健壮性,时间复杂度和空间复杂度来衡量。
一个算法中的语句执行次数称为语句频度或时间频度,记为T(n),n称为问题的规模。
时间复杂度用标记符号O表示,定义为T[n] = O(f(n))。
常见复杂度
复杂度 | 通用叫法 |
---|---|
O(1) | 常数阶 |
O(n) | 线性阶 |
O(n2) | 平方阶 |
O(log n) | 对数阶 |
O(2n) | 指数阶 |
- O(n2)
双层for循环一般复杂度为O(n2)。示例代码:
int count = 0;
for(i=0; i<n; i++) {
for(int j=0; j < n; j++) {
count++;
}
}
- O(log2 n)
循环中对n取一半,相当于对数,示例代码:
while (n > 0) {
n = n / 2;
}