Verwendung der Rekursion beim Erstellen eines binären Suchalgorithmus

7

Ich habe meine freie Zeit genutzt, um Java durch Codierungsalgorithmen zu üben. Einer der von mir kodierten Algorithmen war die binäre Suche:

%Vor%

Ich möchte wirklich in der Lage sein, einen viel saubereren und effizienteren binären Suchalgorithmus zu schreiben, eine Alternative zu dem, was ich programmiert habe. Ich habe Beispiele dafür gesehen, wie Rekursion verwendet wird, etwa wenn ich faktoriell mit Zahlen arbeite, die ich verstehe. Wenn ich jedoch etwas von dieser Komplexität schreibe, bin ich verwirrt darüber, wie ich es zu meinem Vorteil nutzen kann. Daher meine Frage ist, wie ich Rekursion anwenden, wenn Sie einen binären Suchalgorithmus kodieren. Und wenn Sie irgendwelche Tipps für mich haben, meine Rekursionsfähigkeiten zu perfektionieren, auch wenn es etwas sein muss, das keine binäre Suche berücksichtigt, dann zögern Sie nicht, zu posten.

    
JP24 25.09.2013, 18:39
quelle

8 Antworten

28

Wenn Sie wirklich Rekursion verwenden möchten, sollte dies tun.

%Vor%     
Cruncher 25.09.2013, 18:52
quelle
7

Hier ist eine einfachere Art, die binäre Suche durchzuführen:

%Vor%     
Sajal Dutta 25.09.2013 18:52
quelle
2

Nachfolgend finden Sie ein Codebeispiel aus hier .

%Vor%

Sie finden Implementierungen der folgenden Testfälle gegen die obige binäre Suchimplementierung auch in der Referenz link .

%Vor%     
lkamal 03.11.2013 09:16
quelle
1

Hier ist ein Algorithmus, der Sie in Schwung bringen soll. Lassen Sie Ihre Methodensignatur:

%Vor%
  1. Überprüfen Sie, ob Ihr begin_index & gt; end_index wenn YES und dann false zurückgeben.
  2. Berechne mid_element für dein Eingabe-Array.
  3. Überprüfen Sie, ob Ihr search_element diesem mid_element entspricht. wenn JA, geben Sie true
  4. zurück
  5. Wenn mid_element & gt; search_element Rufen Sie Ihre Methode mit für range 0 - mid auf
  6. Wenn mid_element & lt; search_element Rufen Sie Ihre Methode mit für den Bereich mid+1 - Length_of_Array auf

Auch wie @DwB in seinem Kommentar sagte, benutzt man besser loop, um Dinge zu erledigen. Einige Probleme sind rekursiver Natur (wie Binärbaumprobleme). Aber dieser gehört nicht dazu.

    
Prateek 25.09.2013 18:53
quelle
1

Dies ist eine andere Art, Rekursion zu machen:

%Vor%     
Michele Orsi 31.12.2015 11:22
quelle
1
___ qstnhdr ___ Verwendung der Rekursion beim Erstellen eines binären Suchalgorithmus ___ answer19751417 ___

Nachfolgend finden Sie ein Codebeispiel aus hier .

%Vor%

Sie finden Implementierungen der folgenden Testfälle gegen die obige binäre Suchimplementierung auch in der Referenz link .

%Vor%     
___ answer19012918 ___

Hier ist eine einfachere Art, die binäre Suche durchzuführen:

%Vor%     
___ answer19012919 ___

Wenn Sie wirklich Rekursion verwenden möchten, sollte dies tun.

%Vor%     
___ answer34545723 ___

Dies ist eine andere Art, Rekursion zu machen:

%Vor%     
___ answer19012930 ___

Hier ist ein Algorithmus, der Sie in Schwung bringen soll. Lassen Sie Ihre Methodensignatur:

%Vor%
  1. Überprüfen Sie, ob Ihr begin_index & gt; end_index wenn YES und dann %code% zurückgeben.
  2. Berechne %code% für dein Eingabe-Array.
  3. Überprüfen Sie, ob Ihr %code% diesem %code% entspricht. wenn JA, geben Sie %code%
  4. zurück
  5. Wenn %code% & gt; %code% Rufen Sie Ihre Methode mit für %code% auf
  6. Wenn %code% & lt; %code% Rufen Sie Ihre Methode mit für den Bereich %code% auf

Auch wie @DwB in seinem Kommentar sagte, benutzt man besser loop, um Dinge zu erledigen. Einige Probleme sind rekursiver Natur (wie Binärbaumprobleme). Aber dieser gehört nicht dazu.

    
___ qstntxt ___

Ich habe meine freie Zeit genutzt, um Java durch Codierungsalgorithmen zu üben. Einer der von mir kodierten Algorithmen war die binäre Suche:

%Vor%

Ich möchte wirklich in der Lage sein, einen viel saubereren und effizienteren binären Suchalgorithmus zu schreiben, eine Alternative zu dem, was ich programmiert habe. Ich habe Beispiele dafür gesehen, wie Rekursion verwendet wird, etwa wenn ich faktoriell mit Zahlen arbeite, die ich verstehe. Wenn ich jedoch etwas von dieser Komplexität schreibe, bin ich verwirrt darüber, wie ich es zu meinem Vorteil nutzen kann. Daher meine Frage ist, wie ich Rekursion anwenden, wenn Sie einen binären Suchalgorithmus kodieren. Und wenn Sie irgendwelche Tipps für mich haben, meine Rekursionsfähigkeiten zu perfektionieren, auch wenn es etwas sein muss, das keine binäre Suche berücksichtigt, dann zögern Sie nicht, zu posten.

    
___ answer43046742 ___

Eine Rekursion BinarySearch mit Abbruchbedingungen, falls Sie den gesuchten Wert nicht finden können

%Vor%

Die Implementierung

%Vor%     
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ antwort43847052 ___

Ein mögliches Beispiel ist:

%Vor%

Hier können Sie die C-Binärsuche mit und ohne Rekursion einchecken

Quelle: Ссылка

    
___ answer41132791 ___

Obwohl der Index nicht zurückgegeben wird, gibt dies zumindest die Idee von "Ja" oder "Nein" zurück, dass sich etwas in der Sammlung befindet:

%Vor%     
___ tag123binarysearch ___ Binäre Suche ist ein effizienter Algorithmus zum Suchen eines Elements in einem sortierten Array. Die Grundidee ist, den Suchraum in jedem Schritt um die Hälfte zu reduzieren. Die Komplexität des Algorithmus ist O (log (n)). ___ tag123algorithm ___ Ein Algorithmus ist eine Folge wohldefinierter Schritte, die eine abstrakte Lösung für ein Problem definieren. Verwenden Sie dieses Tag, wenn sich Ihr Problem auf den Algorithmusentwurf bezieht. ___
delive 08.05.2017 11:57
quelle
0

Obwohl der Index nicht zurückgegeben wird, gibt dies zumindest die Idee von "Ja" oder "Nein" zurück, dass sich etwas in der Sammlung befindet:

%Vor%     
Lorena Nicole 14.12.2016 00:19
quelle
0

Eine Rekursion BinarySearch mit Abbruchbedingungen, falls Sie den gesuchten Wert nicht finden können

%Vor%

Die Implementierung

%Vor%     
Daniel Ferreira Castro 27.03.2017 12:40
quelle

Tags und Links