Итак, позвольте мне прояснить несколько вещей, вас интересует нотация big-O - это означает верхнюю границу . Другими словами, можно считать больше шагов, чем вы на самом деле. В частности, вы можете изменить алгоритм на
...
for (j = 0; j < n; j++)
...
Таким образом , у вас есть два вложенных цикла, каждый цикл выполняется раз, что дает вам верхнюю границу изNO ( n2)
Конечно, вы хотели бы получить хорошую оценку для верхней границы. Итак, для завершения мы хотим определить нижнюю границу. Это означает, что можно считать меньше шагов. Так что рассмотрим модификацию
for (i = n/2; i < n; i++)
for (j = 0; j < n/2; j++)
sum++;
Здесь мы выполняем только некоторые из циклов-итераций. Снова у нас есть два вложенных цикла , но на этот раз мы имеем итерации на цикл, что показывает, что у нас есть по крайней мере дополнения. В этом случае мы обозначим эту асимптотическую нижнюю оценку через . Поскольку нижняя и верхняя границы совпадают, мы можем даже сказать, что является жесткой асимптотической границей, и мы пишем .н 2 / 4 Ω ( п 2 ) п 2 Θ ( п 2 )н / 2N2/ 4Ω ( n2)N2Θ ( н2)
Если вы хотите узнать больше, прочитайте здесь .