0 Daumen
685 Aufrufe

Aufgabe:

Analyse von Algorithmen

Ternäre Suche
Wir übertragen die Idee der Binärsuche auf die Suche in einer von drei Teilen.

boolean ternarySearch(int[] a, int low, int high, int v) {
    if (low > high) return false;
    int mid1 = low + (high - low) / 3;
    if (a[mid1] == v) return true;
    if (v < a[mid1]) {
        return ternarySearch(a, low, mid1 - 1, v);
    }
    int mid2 = low + 2 * (high - low) / 3;
    if (a[mid2] == v) return true;
    if (v < a[mid2]) {
        return ternarySearch(a, mid1 + 1, mid2 - 1, v);
    }
    return ternarySearch(a, mid2 + 1, high, v);
}



Analysieren Sie die Komplexität (Anzahl an Vergleichen – worst-case!). Gehen Sie wie folgt vor:
• Erstellen Sie die Rekursionsgleichung (analog zur binären Suche)
• Versuchen Sie, eine Lösung zu „erraten“ – Denken Sie an Binärsuche


Ansatz:

Die erste Frage habe ich beantwortet mit der Rekursionsgleichung T(n) = T (n/3) + 4

Ich weiß nicht genau was man bei der zweiten Frage tun soll? Mit der Rekursionsgleichung irgendwie eine Lösung erraten? Kann mir bitte jemand weiterhelfen?



Vielen Dank im Voraus!

geschlossen: Die Frage gibt's auch unter https://www.stacklounge.de/6353/analyse-von-algorithmen-ternare-suche
von oswald
Avatar von
Deine Frage wurde in die Informatik verschoben. https://www.stacklounge.de/6353/analyse-von-algorithmen-ternare-suche (Gleiches Login wie hier) Bitte reagiere auf den Kommentar dort z.B. mit der Idee, wie sich die Frage inzwischen erledigt hat.

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community