Time complexity 如何分析在不同情况下行为可能发生变化的程序的复杂性?

Time complexity 如何分析在不同情况下行为可能发生变化的程序的复杂性?,time-complexity,code-complexity,Time Complexity,Code Complexity,当我遇到这个问题时,我想知道如何分析它的复杂性 例如: 对于queue(),复杂性始终为O(1),因为它只是简单地推入收件箱 对于dequeue(),大多数情况下复杂性也是O(1),但当发件箱为空时,它需要一个循环来将所有元素从收件箱移动到发件箱。那么,这一行动的复杂性是什么 在分析此类问题时,您的想法是什么 如Dave L.在其解释中所述,“每个元素将被推两次并弹出两次,从而得到摊销的固定时间操作”。这是因为每次需要将n个元素从一个堆栈移动到另一个堆栈(需要O(n)个时间)的出列之后都会出

当我遇到这个问题时,我想知道如何分析它的复杂性

例如:

  • 对于queue(),复杂性始终为O(1),因为它只是简单地推入收件箱
  • 对于dequeue(),大多数情况下复杂性也是O(1),但当发件箱为空时,它需要一个循环来将所有元素从收件箱移动到发件箱。那么,这一行动的复杂性是什么

在分析此类问题时,您的想法是什么

如Dave L.在其解释中所述,“每个元素将被推两次并弹出两次,从而得到摊销的固定时间操作”。这是因为每次需要将n个元素从一个堆栈移动到另一个堆栈(需要O(n)个时间)的出列之后都会出现n-1个只需要O(1)个时间的出列

因此,表示
dequeue()
的复杂性的一种方法是,它以最佳cas O(1)和最坏情况O(n)摊销恒定时间