出列操作的时间复杂性

时间:2017-12-23 21:09:27

标签: algorithm time-complexity

考虑以下操作以及队列上的Enqueue和Dequeue操作,其中k是全局参数。

MultiDequeue(Q){
     m = k 
     while ((Q is not empty) and (m > 0))  
     { Dequeue(Q) 
       m = m – 1 
      }
}

最初完整的n个队列操作序列的最坏情况时间复杂度是多少 队列?

(A)Θ(n)的

(B)Θ(N + K)

(C)Θ(NK)

(d)Θ(N ^ 2)

这里假设我们进行一次出列操作,然后循环将运行min(n,k)次。现在剩下的1个操作可以是1个排队操作,这将花费O(1)时间,因此在这种情况下总复杂度将为O(min(n,k))。

假设我们有k = 1并且执行(n-1)个出列操作,那么对于multideqeue函数将花费k *(n-1)时间,并且剩余的一个入队操作将花费O(1)时间。所以总的来说,在这种情况下我们得到了O(kn)时间。

当我们计算复杂度时,我对如何处理'k'参数感到困惑。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

你可以认为'K'是常数,并且在计算时间复杂度时(渐近)我们忽略这些常数项或将其计为O(1)。 因此,此程序的最差时间复杂度可能会达到O(n)。