Sers
ich hätte da eine Frage bezüglich laufzeit und o-notationen. wie es ungefähr funktioniert, scheine ich kapiert zu haben, aber will nur noch mal sicher gehen.
Ich habe hier folgenden Codeausschnitte (ist aus einer früheren Klausur, wo es noch keine lösungen gibt und mehr ist nicht gegeben) und will daraus die laufzeitkomplexität berechnen:
Ist das Ergebnis dann O ( (n-1) (n-2) ) = O (n² - 3n + 2) ? Ich zweifle eigentlich nur daran, weil es ein ziemlich "unschönes" ergebnis ist :bloed:
Und zweitens, wie berechne ich sowas im Falle von if-else?
Im besten fall ist das ja nur O(1), wenn x >= 100 ist. Oder muss ich hier sowas wie eine Fallunterscheidung machen oder nur den Worst-Case nehmen?
Für letzteres wäre es doch, wenn ich mich nicht irre, dann doch O (1 * (n-1) * 1) = O (n-1)
Sehe ich das alles so richtig oder habe ich irgendwo einen denkfehler gemacht?
Danke schon mal
ich hätte da eine Frage bezüglich laufzeit und o-notationen. wie es ungefähr funktioniert, scheine ich kapiert zu haben, aber will nur noch mal sicher gehen.
Ich habe hier folgenden Codeausschnitte (ist aus einer früheren Klausur, wo es noch keine lösungen gibt und mehr ist nicht gegeben) und will daraus die laufzeitkomplexität berechnen:
Java:
for ( int j = n-1; j>1; j--) { //wird n-2 mal durchlaufen
for ( int i = 1; i<n ; i++) { //wird n-1 mal durchlaufen
array [j] = array [j] - 1;
}
}
Ist das Ergebnis dann O ( (n-1) (n-2) ) = O (n² - 3n + 2) ? Ich zweifle eigentlich nur daran, weil es ein ziemlich "unschönes" ergebnis ist :bloed:
Und zweitens, wie berechne ich sowas im Falle von if-else?
Java:
if (x < 100) { //wird einmal durchlaufen
y = x;
} else
for (int i = 1; i < n; i++) { //wird n-1 mal durchlaufen
if (a[i] > y) //wird einmal durchlaufen
y = a[i];
}
Im besten fall ist das ja nur O(1), wenn x >= 100 ist. Oder muss ich hier sowas wie eine Fallunterscheidung machen oder nur den Worst-Case nehmen?
Für letzteres wäre es doch, wenn ich mich nicht irre, dann doch O (1 * (n-1) * 1) = O (n-1)
Sehe ich das alles so richtig oder habe ich irgendwo einen denkfehler gemacht?
Danke schon mal