考虑以下操作以及队列上的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'参数感到困惑。
任何帮助都将不胜感激。
答案 0 :(得分:0)
你可以认为'K'是常数,并且在计算时间复杂度时(渐近)我们忽略这些常数项或将其计为O(1)。 因此,此程序的最差时间复杂度可能会达到O(n)。