Я пытаюсь доказать, что следующий алгоритм работает в O (n^2) времени.Расчет времени выполнения цикла
Я дал код: который в основном psedocode
function generalFunction(value)
for(i=1 to value.length-1)// value is an array, and this runs `n-1 Times`
for(j=1 to value.length-i // This runs `n-1(n-1)` times?
if value[j-1] > value[j] //This runs n^2 times?
swap A[j+1] and value[j] //How would would this run?
Для первой строки, я подсчитал, что он работает n-1
раз. Поскольку цикл идет n раз, но поскольку мы вычитаем 1 из длины массива arbritray, это будет n-1
раз (я считаю).
То же самое можно сказать и для второй строки, за исключением того, что мы должны умножить ее на исходный цикл.
Однако, я не уверен в последних двух строках, будет ли третий работать в n^2 раза? Я написал n^2 из-за двух вложенных циклов. Я не уверен, как подойти к последней строке, любой вклад будет очень оценен.
в терминах Big O последние две строки работают в постоянное время, то есть O (1) операции. их можно игнорировать. и n^2 правильно –