目录
大部分情况下,我们并不需要区分最好、最坏、平均三种复杂度。平均复杂度只在某些特殊情况下才会用到。而均摊时间复杂度应用的场景比它更加特殊、更加有限。
// n 表示数组 array 的长度
int find(int[] array, int n, int x) {
int i = 0;
int pos = -1;
for (; i < n; ++i) {
if (array[i] == x) {
pos = i;
break;
}
}
return pos;
}
以上面的代码为例,我们说明最好、最坏、平均三种复杂度。
最好情况时间复杂度
在最理想的情况下,执行这段代码的时间复杂度
以上面的代码为例,在最理想的情况下,要查找的变量 x 正好是数组的第一个元素,这个时候对应的时间复杂度 O(1)就是最好情况时间复杂度
最坏情况时间复杂度
在最糟糕的情况下,执行这段代码的时间复杂度
以上面的代码为例,如果数组中没有要查找的变量 x,我们需要把整个数组都遍历一遍才行,所以这种最糟糕情况下对应的时间复杂度O(n)就是最坏情况时间复杂度