Как найти время выполнения в форме точных, тильд и больших ой - PullRequest
0 голосов
/ 29 сентября 2019

У меня возникли трудности с заданием, которое мне дали.Я должен найти время выполнения некоторых java-функций в виде точной, тильдовой и большой ой нотации.

Пример того, как:

exampleFunc: exact = 2n+1, tilde = ~2n  ,O()=O(2n)

Я действительно борюсь с этим и не могу найти хороших источников о том, как это сделать онлайн.Я был бы очень признателен за любую помощь или указатели!
Вот функции:

void funcA(int n) {

    step();

    for (int i = 0; i < n; i++) {

        funcA(n-1);

    }

}

void funcB(int n) {

    step();

    if (n > 0)

        funcB(n-1);

}

void funcC(int n) {

    step();

    if (n > 0) {

        funcC(n/2);

    }

}



void funcD(int n) {

    if (n > 0) {

        funcD(n/2);

    }

    for (int i = 0; i < n; i++) {

        step();

    }

    if (n > 0) {

        funcD(n/2);

    }

}

void funcE(int n) {

    Random random = new Random();

    int target = random.nextInt(n);

    int lo = 0;

    int hi = n;

    while (hi - lo > 1) {

        step();

        int mid = (lo + hi) / 2;

        if (mid > target) {

            hi = mid;

        }

        else {

            lo = mid;

        }

    }

}



void funcF(int n) {

    step();

    if (n > 0) {

        funcF(n-1);

        funcF(n-1);

        funcF(n-1);

    }

}



void funcG(int n) {

    for (int i = 0; i < n; i++) {

        step();

        for (int j = 1; j <= n; j *= 3) {

            step();

        }

    }

}



void funcH(int n) {

    step();

    for (int i = 1; i <= n; i *= 2) {

        step();

        step();

    }

    for (int i = 0; i <n; i++) {

        step();

    }

}



void funcI(int n) {

    int i = n * n * n;

    while (i > 0) {

        step();

        for (int j = 0; j * j < n; j++) {

            step();

            i--;

        }

    }
...