Большой О, как вы рассчитываете/аппроксимируете это?

Big O дает верхнюю границу slow временной сложности алгоритма. Обычно optimize он используется в сочетании optimisation с обработкой наборов данных slow (списков), но может использоваться complexity и в других местах.

Несколько optimisation примеров того, как это используется big-theta в коде C.

Допустим, у нас algorithm есть массив из n элементов

int array[n];

Если optimization бы мы хотели получить доступ big-o к первому элементу массива, это slow было бы O(1), поскольку не performance имеет значения, насколько performance велик массив, для получения slow первого элемента всегда требуется optimize одно и то же постоянное время.

x = array[0];

Если complexity-theory мы хотим найти число в списке:

for(int i = 0; i < n; i++){
    if(array[i] == numToFind){ return i; }
}

Это optimize будет O(n), так как в лучшем complexity случае нам придется просмотреть big-o весь список, чтобы найти big-theta наш номер. Big-O по-прежнему algorithm-design равен O(n), даже если мы complexity можем найти наше число с asymptotic-complexity первой попытки и пройти цикл algorithm один раз, потому что Big-O asymptotic-complexity описывает верхнюю границу slow алгоритма (омега — нижняя big-o граница, а тета — жесткая optimization граница). .

Когда мы дойдем algorithm-design до вложенных циклов:

for(int i = 0; i < n; i++){
    for(int j = i; j < n; j++){
        array[j] += 2;
    }
}

Это O(n^2), так algorithm как для каждого прохода внешнего optimization цикла ( O(n) ) мы должны slow снова пройти весь список, поэтому optimisation n умножаются, оставляя n optimisation в квадрате.

Это едва поверхностно, но asymptotic-complexity когда вы начинаете анализировать slow более сложные алгоритмы, в complexity-theory игру вступает сложная математика, включающая optimisation доказательства. Надеюсь, это optimisation познакомит вас хотя бы с algorithm основами.

algorithm

optimization

complexity-theory

big-o

performance

2022-11-13T01:51:54+00:00