Имам въпрос относно теорията на сложността. Ако имам алгоритъм за сортиране с мехурчета и искам да намеря времето за работа в най-лошия случай Big O, можем да заключим, че това е O(n^2). Сега, какво ще кажете за това, ако имам програма, която изпълнява различни операции като алгоритъм за сортиране, алгоритъм за търсене и т.н. Как да разбера кое е най-лошото време за изпълнение (Голямо О) на тази програма като цяло.
Например, как наличието на различни алгоритми в рамките на една програма със съответния най-лош случай на време на изпълнение Big O стига до заключението за най-лошия случай на време на изпълнение (Big O) на цялата програма. Например когато една програма има следното: O(n^2), O(1), O(n).... Коя от тези нотации е тази, която представлява цялата програма?
Как бихте намерили най-лошото време за работа Big O на тази програма?
import java.util.*;
public class Prog1 {
public static void main(String[] args) {
int first = 0;
int last;
int middle;
int search;
int[] array;
Scanner input = new Scanner(System.in);
System.out.println("Number of elements");
int n = input.nextInt();
array = new int[n];
System.out.println("Enter " + n + " value ");
for (int x = 0; x < n; x++) {
array[x] = input.nextInt();
}
System.out.println("Value to search");
search = input.nextInt();
last = n - 1;
middle = (first + last) / 2;
while (first <= last) {
if (array[middle] < search)
first = middle + 1;
else if (array[middle] == search) {
System.out.println(" Number " + search + " is in the array");
break;
} else
last = middle - 1;
middle = (first + last) / 2;
}
if (first > last)
System.out.println(" Number " + search + " is not in the list.");
}
}
n
? - person Oliver Charlesworth   schedule 29.09.2014