S
SomeProb
Gast
Hallo,
ich habe auf meinen Üblatt folgenden Programmtext gegeben:
Für die Rekursionsformel habe ich mir gedacht:
T(n)=2*T(n/2)+O(n)
Das Array wird ja in zwei Hälften geteilt, daher 2*T(n/2). Die For-Schleifen müssen durchlaufen werden, was n^2 ergibt. In O-Notation als O(n).
Für die explizite Formel hätte ich dann weiter abgeschätzt:
T(n)<=2*T(n/2)+O(n)<=...<=O...
Aber irgendwie beschleicht mich das Gefühl, dass meine Rekursionsformel falsch ist, weswegen ich die explizite Formel noch nicht abgleitet habe und hier um Hilfe such.
ich habe auf meinen Üblatt folgenden Programmtext gegeben:
Java:
// Rueckgabewert true = Duplikat-frei
boolean checkDups(a) {
if (a enthaelt nur ein Element) {
return true;
}
aLeft = linke Haelfte von a;
aRight = rechte Haelfte von a;
if (!checkDups(aLeft) || !checkDups(aRight)) {
return false;
}
for (x in aLeft) {
for (y in aRight) {
if (x == y) {
return false;
}
}
}
return true;
}
Für die Rekursionsformel habe ich mir gedacht:
T(n)=2*T(n/2)+O(n)
Das Array wird ja in zwei Hälften geteilt, daher 2*T(n/2). Die For-Schleifen müssen durchlaufen werden, was n^2 ergibt. In O-Notation als O(n).
Für die explizite Formel hätte ich dann weiter abgeschätzt:
T(n)<=2*T(n/2)+O(n)<=...<=O...
Aber irgendwie beschleicht mich das Gefühl, dass meine Rekursionsformel falsch ist, weswegen ich die explizite Formel noch nicht abgleitet habe und hier um Hilfe such.