我想我至少开始理解大哦符号背后的理论,即它是一种衡量函数速度增长速度的方法。换句话说,大 O 量化了算法的效率。但它的实现是另一回事。
例如,在最好的情况下,push 和 pull 操作将是 O(1),因为从堆栈中删除或添加到堆栈所需的步骤数将是固定的。不管值是多少,过程都是一样的。
我试图设想一系列事件(例如 push 和 pop)如何将性能从 O(1) 降低到 O(n^2)。如果我有一个 n/2 容量的数组,n 个 push 和 pop 操作,以及一个在满或半满时容量加倍或减半的动态数组,这些操作发生的顺序怎么可能影响速度哪个程序完成?由于 push 和 pop 在堆栈的顶部元素上工作,我无法看到效率如何从常数变为 O(n^2)。
提前致谢。