У меня возникли трудности с заданием, которое мне дали.Я должен найти время выполнения некоторых 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--;
}
}