有限的尺寸;添加,删除和随机播放

时间:2014-03-19 19:57:59

标签: c# java big-o abstract-data-type

添加到队列将是O(1)。那么去除效率会是多少?我对此有点困惑。它是O(1)是有意义的,因为我们正在从头部移除但是如果队列达到它的最大限制为5因此,在插入新元素之前,队列必须出列1并移动/随机移动顶部朝向前方的4个元件将新元件插入后部(第5个位置)。它还会是O(1)吗?或者也许是O(n)因为改组方法。

我不需要代码或深度解释,只需要合理的解释。

1 个答案:

答案 0 :(得分:2)

如果队列是作为循环缓冲区实现的,例如.NET Queue类,那么即使你是两个操作,它仍然是O(1)操作将一个项目添加到最后并从头部删除一个项目。作为一个循环缓冲区,它不需要移动所有项目,它只需要调整两个整数索引,表示队列的开始/结束在缓冲区内的位置。

最重要的是,如果容量为5,那么你可以说,即使你 需要移动所有物品,你也永远不会移动超过5个。当n很小时,是O(1)。 Big O仅在' n'可以扩展到大数。