У меня проблемы с анализом алгоритма. Кажется, я в порядке, идентифицируя линейные или квадратные алгоритмы, но полностью потерян с алгоритмами nlogn или logn, кажется, что они происходят в основном из циклов while? Вот пример, на который я смотрел:
Algorithm Calculate(A,n)
Input: Array A of size n
t←0
for i←0 to n-1 do
if A[i] is an odd number then
Q.enqueue(A[i])
else
while Q is not empty do
t←t+Q.dequeue()
while Q is not empty do
t←t+Q.dequeue()
return t
Мое лучшее предположение, что цикл for выполняется n раз, его вложенный цикл while q раз равен NQ, а последний цикл while также Q раз, что приводит к O (NQ + Q), что является линейным?