了解堆栈操作的复杂性
下面是不同堆栈操作的时间复杂度。在最坏情况下,堆栈操作的时间复杂度如下:
操作 | 时间复杂度 |
---|---|
pop |
\$O(1)\$ |
push |
\$O(1)\$ |
top |
\$O(1)\$ |
isEmpty |
\$O(1)\$ |
由于堆栈在一端运行,会一直记住堆栈的顶部,因此如果我们要搜索堆栈中的某个项目,就意味着我们必须搜索整个列表。访问堆栈中的某个项目也是如此。虽然使用堆栈进行这类操作不是好的做法,但如果我们想这样做,就必须记住,时间复杂度的基础不仅仅是一般的堆栈操作。
操作 | 时间复杂度 |
---|---|
Access |
\$O(n)\$ |
Search |
\$O(n)\$ |
堆栈的空间复杂度始终为 \$O(n)\$。 |
到目前为止,我们已经看到了如何使用 PHP 数组及其内置函数 array_pop
和 array_push
来实现堆栈。但我们也可以忽略内置函数,通过手动数组操作来实现,或者使用 array_shift
和 array_unshift
内置函数。