具有固定大小的队列的空间复杂性

时间:2017-04-06 21:39:29

标签: java algorithm queue

目前,我正在研究空间和时间复杂度分析。我有个问题。 如果我们创建一个队列,我们​​知道我们只需要这个队列来最多维护5000个元素。 此队列的空间复杂度应为O(1)?

3 个答案:

答案 0 :(得分:1)

在您的问题的限制范围内,无论您执行多少操作,您的队列都不会超过5000个元素,因此其大小受常量(5000)限制。这就是O(1)大小复杂度的定义。

答案 1 :(得分:0)

我还没有像时间复杂性那样广泛地研究空间复杂性。我的研究来自https://www.quora.com/How-do-we-calculate-space-complexity

当我们添加到Size<队列中时我认为5000队列的空间复杂度将是O(N)。你正在增长队列,这将占用N *(元素大小)字节。

  

如果我的队列大小是> 5000,然后我将从队列中轮询top元素并将新元素添加到队列中。该操作是否会影响队列的空间复杂性?

如果您的队列处于最大容量(5000),并且在添加更多元素时要删除队列的第一个元素,则整体大小保持不变。当队列达到最大容量时添加其他元素现在是O(1)。

答案 2 :(得分:0)

这取决于,如果你以某种方式占用队列所需的所有空间来容纳所有5000个元素,或者只是从已经有5000个元素的元素开始,那么O(1)空间复杂。此时它会像array一样。

但是,如果从零节点开始并且继续向结构添加节点,那么它将O(n)复杂,因为在这种意义上队列是动态的,无论您将拥有5000个最大元素。

顺便说一句,

Here是一个很好的复杂性备忘单。