ich für die Prüfung vorbereite, wo ich auf diese Frage kam:Was die Gesamtlaufzeit des folgenden Codes ist (N ist ein int-Variable)
Was die Gesamtlaufzeit des folgenden Codes (N ist ein int-Variable)
Z z = new Z(N);
for (int i = 0; i < N; i++) z.insert("Bob", i);
Klasse Z:
public class Z
{
String[] names;
Integer[] numbers;
int N = 0;
public Z(int cap)
{
names = new String[cap];
numbers = new Integer[cap];
}
public Integer find(String S)
{
for (int i = 0; i < N; i++)
{
if (names[i].equals(S)) return numbers[i];
}
return null;
}
public void insert(String S, Integer M)
{
for (int i = 0; i < N; i++)
{
if (names[i].equals(S)) numbers[i] = M;
}
names[N] = S;
numbers[N] = M;
N++;
}
}
ich denke, die Antwort auf diese Frage O (n^2). Die ersten für die Schleife dauert O (n) mal, und das Verfahren Einsatz nimmt O (n) mal (Anmerkung: n ++ auf jedem Einsatz call), die O insgesamt ergibt (n^2)
Sie können die Lauf ** Zeit nicht berechnen **, können Sie nur die Laufzeit finden ** Wachstum **. Sie können eine Big-O-Notation nicht in ** Zeit ** übersetzen, das ist einfach unmöglich. –