Многие ответы здесь забыли о важном предположении. Если у вас есть n операций, каждая из них O (n), то она не автоматически следует, что сумма равна O (n 2 )! Скажем, k-я операция занимает k * n времени (так что это постоянные времена n) - первая операция занимает n времени, вторая 2 * n и т. Д. Тогда сумма первых n операций равна O (n 3 ) .
Для неверующих, вот пример такого злоупотребления, из CLRS:
Ложное утверждение:
n
Σ k = O(n)
i=1
Доказательство по индукции:
Для n = 1, 1 = O (1).
Для n + 1, если гипотеза верна для n,
n+1 n
Σ k = ( Σ k) + (n+1) = O(n) + n = O(n)
i=1 i=1
«Доказательство» неверно, сумма равна O (n 2 ).
Вы можете только сказать, что O (n) + ... + O (n) есть O (n 2 ), если все константы, спрятанные в большом O , все ограничены некоторой константой . В этом случае вы можете написать
O (n) + ... + O (n) <= kn + kn + ... + kn <= kn <sup>2 = O (n 2 ).
Если константы не ограничены, это неправильно.