出列操作的时间复杂性

问题描述 投票:-1回答:1

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

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

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

(A)Θ(n)

(B)I(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'参数感到困惑。

任何帮助,将不胜感激。

algorithm time-complexity
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.