Для каждого значения i
код выполняет ряд операций, которые зависят от i
, скажем c(i)
.Таким образом, общее количество операций будет
total := sum_{i=1}^{n-1} c(i)
. Теперь давайте вычислим c(i)
для общего i
.В худшем случае истинная ветвь оператора if
всегда выполняется и принимает, скажем, C
операций, что является величиной, независимой от j
, i
и n
.Итак,
c(i) <= sum_{j=n}^{i+1} C
= C*(n - (i+1) + 1)
= C*(n - i)
Таким образом
total <= sum_{i=1}^{n-1} C*(n-i)
= C * sum_{i=1}{n-1} (n-i)
= C * n(n-1)/2
= O(n^2)
Обратите внимание, что в лучшем случае истинная ветвь if
никогда не произойдет, и вам нужно будет только принять необходимое количество операций.чтобы вычислить неравенство, скажите D
.Следовательно, вы можете повторить тот же расчет, что и раньше, заменив C
на D
и <=
на >=
, чтобы получить
total >= O(n^2)