Ternäre Suche vs. Binäres Suchen

Google Translate Icon

In diesem Artikel implementieren wir einen ternären Suchalgorithmus und vergleichen seine Leistung mit dem binären Suchalgorithmus.

Voraussetzung:

Binärer Suchalgorithmus – Iterative und rekursive Implementierung

 
Bei der ternären Suche teilen wir unser Array in drei Teile (indem Sie zwei Mitte nehmen) und verwerfen bei jeder Iteration zwei Drittel unseres Suchraums. Auf den ersten Blick scheint es, dass die ternäre Suche schneller sein könnte als die Binäres Suchen, da ihre Zeitkomplexität bei einer Eingabe enthalten ist n Artikel sollten sein O(log3n), was weniger als die Zeitkomplexität der Binäres Suchen ist O(log2n). Bevor wir diese Behauptung analysieren, werfen wir zunächst einen Blick auf die C-, Java- und Python-Implementierung.

C


Herunterladen  Code ausführen

Ergebnis:

Element found at index 2

Java


Herunterladen  Code ausführen

Ergebnis:

Element found at index 2

Python


Herunterladen  Code ausführen

Ergebnis:

Element found at index 2

Wie wir sehen können, führt die ternäre Suche bei jeder Iteration höchstens 4 Vergleiche durch, im Vergleich zur Binäres Suchen, die nur 2 Vergleiche durchführt. So,

Ternary Search complexity analysis

 
Für die Binäres Suchen – T(n) = 2clog2n + O(1)
Für ternäre Suche – T(n) = 4clog3n + O(1)

 
Durch Anwendung einfacher Mathematik können wir feststellen, dass die Zeit, die eine ternäre Suche benötigt, gleich ist 2.log32 mal die benötigte Zeit binärer Suchalgorithmus.

Jetzt seit 2.log32 > 1, bekommen wir tatsächlich mehr Vergleiche mit der ternären Suche.

Daher ergibt eine ternäre Suche immer noch die gleiche asymptotische Komplexität O(log(n)) Suchzeit, erhöht aber die Komplexität der Implementierung. Dasselbe Argument gilt für eine quaternäre Suche oder eine k–näre Suche nach jeder anderen höheren Ordnung.

Wie von Oriba Desu in den Kommentaren unten hervorgehoben, können wir eine ternäre Suche verwenden, um das Extremum (Minimum oder Maximum) von an zu finden unimodale Funktion.

Bewerte diese Nachricht

Durchschnittliche Bewertung 4.76/5. Stimmenzahl: 226

Bisher keine Stimmen! Seien Sie der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass dieser Beitrag für Sie nicht hilfreich war!

Sagen Sie uns, wie wir diesen Beitrag verbessern können?




Danke fürs Lesen.

Bitte nutzen Sie unsere Online-Compiler um Code in Kommentaren mit C, C++, Java, Python, JavaScript, C#, PHP und vielen weiteren gängigen Programmiersprachen zu posten.

Wie wir? Empfehlen Sie uns Ihren Freunden und helfen Sie uns zu wachsen. Viel Spaß beim Codieren :)



Abonnieren
Benachrichtigen von
guest
3 Kommentare
Am meisten gewählt
Neueste Älteste
Inline-Feedbacks
Alle Kommentare anzeigen
Folgen Sie diesem Link NICHT, sonst werden Sie von der Seite ausgeschlossen!