方法:维护两个栈A和B。将元素推入A中。要弹出元素,查看B是否为空。如果B为空,则完全弹出A并将其推入B,然后从B中弹出。否则,直接从B中弹出。
问题:1)运行时间和摊销运行时间有什么区别? 2)为什么在这里摊销运行时间是恒定的?随着输入数量的增加和我们决定从中弹出的时间,它不会增加吗?因为如果我们继续推,则A会填充相当多,而B为空。现在,如果我们决定从B中弹出,则需要复制所有A,然后弹出。
注:摊销分析是一种计算复杂数据结构操作总体平均性能的方法。方法:维护两个栈A和B。将元素推入A中。要弹出元素,查看B是否为空。如果B为空,则完全弹出A并将其推入B,然后从B中弹出。否则,直接从B中弹出。
问题:1)运行时间和摊销运行时间有什么区别? 2)为什么在这里摊销运行时间是恒定的?随着输入数量的增加和我们决定从中弹出的时间,它不会增加吗?因为如果我们继续推,则A会填充相当多,而B为空。现在,如果我们决定从B中弹出,则需要复制所有A,然后弹出。
注:摊销分析是一种计算复杂数据结构操作总体平均性能的方法。