了解堆栈操作的复杂性

下面是不同堆栈操作的时间复杂度。在最坏情况下,堆栈操作的时间复杂度如下:

操作 时间复杂度

pop

\$O(1)\$

push

\$O(1)\$

top

\$O(1)\$

isEmpty

\$O(1)\$

由于堆栈在一端运行,会一直记住堆栈的顶部,因此如果我们要搜索堆栈中的某个项目,就意味着我们必须搜索整个列表。访问堆栈中的某个项目也是如此。虽然使用堆栈进行这类操作不是好的做法,但如果我们想这样做,就必须记住,时间复杂度的基础不仅仅是一般的堆栈操作。

操作 时间复杂度

Access

\$O(n)\$

Search

\$O(n)\$

堆栈的空间复杂度始终为 \$O(n)\$。

到目前为止,我们已经看到了如何使用 PHP 数组及其内置函数 array_poparray_push 来实现堆栈。但我们也可以忽略内置函数,通过手动数组操作来实现,或者使用 array_shiftarray_unshift 内置函数。