Если бы у вас было N = 10, ваши итерации были бы: 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1. (это: десять итераций плюс девять итераций плюс восемь итераций и т. д.).
Теперь вам нужно выяснить, сколько раз вы можете получить N (10 в примере):
1: (10), 2: (9 + 1), 3: (8 + 2), 4: (7 + 3), 5: (6 + 4). Что 5 раз ... и отдыхает 5 итераций.
Теперь вы знаете, что у вас есть пять десятков + 5:
10 (5) + 5
С точки зрения f (n) (или N), мы легко видим, что это будет:
f (n) = n (n / 2) + n / 2 = (n ^ 2) / 2 + n / 2 = (n ^ 2 + n) / 2 ... это именно сложность этих вложенный цикл.
Но, учитывая асимптотическое поведение Big O, мы можем избавиться от менее значимых значений f (n), которые являются единственным n и знаменателем.
Результат: O (n ^ 2)