Предположим, у вас есть один связанный список размером N, и вы хотите выполнить операцию для каждого элемента, начиная с конца.
Я придумал следующий псевдокод:
while N > 0
Current = LinkedList
for 0 to N
Current = Current.tail
end
Operation(Current.head)
N := N-1
end
Теперь я должен определить, какой Big-O этот алгоритм.
Предположим, что Operation () - это O (1), я думаю, что-то вроде этого:
N + (N-1) + (N-2) + ... + (N-(N-1)) + 1
Но я не уверен, что это за Big-O. Я думаю, что он определенно меньше, чем O (N ^ 2), но я не думаю, что вы также можете сказать, что это O (N) ...