Wie implementiert man den binären Suchalgorithmus im Programmierwettbewerb?

Inhaltsverzeichnis

1. Was ist eine binäre Suche?

2. So führen Sie eine binäre Suche durch

3. Vorteile und Anwendungsszenarien der binären Suche


 

1. Was ist eine binäre Suche?

Der binäre Suchalgorithmus, auch binärer Suchalgorithmus genannt, ist ein Suchalgorithmus zum Auffinden eines bestimmten Elements in einem geordneten Array. Sein Implementierungsprinzip besteht darin, den Suchbereich durch kontinuierliche Aufteilung des Suchbereichs in zwei Teile einzugrenzen, bis das Zielelement gefunden wird oder festgestellt wird, dass das Zielelement nicht vorhanden ist.

Die spezifischen Implementierungsschritte sind wie folgt:

  1. Bestimmen Sie die Startposition und die Endposition des zu durchsuchenden Intervalls. Normalerweise ist die anfängliche Startposition der Index des ersten Elements des Arrays und die Endposition der Index des letzten Elements des Arrays.
  2. Berechnen Sie die Mittelposition des zu durchsuchenden Intervalls, verwenden Sie die Methode (Start + Ende) / 2 und verwenden Sie den ganzzahligen Teil als Index der Mittelposition.
  3. Bestimmen Sie das Größenverhältnis zwischen dem Element in der Mittelposition und dem Zielelement:
    • Wenn das Element an der mittleren Position mit dem Zielelement übereinstimmt, wird diese Position zurückgegeben.
    • Wenn das Element an der mittleren Position größer als das Zielelement ist, aktualisieren Sie die Endposition auf die mittlere Position minus 1 und grenzen Sie den Suchbereich von der Startposition auf die mittlere Position minus 1 ein.
    • Wenn das Element an der mittleren Position kleiner als das Zielelement ist, aktualisieren Sie die Startposition auf die mittlere Position plus 1 und grenzen Sie den Suchbereich von der mittleren Position plus 1 auf die Endposition ein.
  4. Wiederholen Sie die Schritte 2 und 3, bis die Startposition größer als die Endposition ist, was darauf hinweist, dass das Suchintervall leer ist. Zu diesem Zeitpunkt kann festgestellt werden, dass das Zielelement nicht vorhanden ist, und -1 wird zurückgegeben.

Der Schlüssel des binären Suchalgorithmus besteht darin, den zu durchsuchenden Bereich kontinuierlich um die Hälfte zu reduzieren und die Position des Zielelements durch kontinuierlichen Vergleich mit dem Element in der Mittelposition schnell zu bestimmen. Da jede Suche den Suchbereich um die Hälfte reduziert, beträgt die zeitliche Komplexität des binären Suchalgorithmus O(log n), wobei n die Länge des Arrays ist. Dies macht die binäre Suche zu einem effizienten Suchalgorithmus, der sich für die Suche nach großen Datenmengen eignet. Es ist jedoch zu beachten, dass der binäre Suchalgorithmus erfordert, dass das zu durchsuchende Array in Ordnung ist.

 2. So führen Sie eine binäre Suche durch

Das Folgende ist ein Beispielcode für die in Java implementierte binäre Suche:

public class BinarySearch {
    public int binarySearch(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        
        while (left <= right) {
            int mid = left + (right - left) / 2;
            
            if (nums[mid] == target) {
                return mid;
            } else if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        
        return -1; // 目标元素不存在
    }
    
    public static void main(String[] args) {
        BinarySearch binarySearch = new BinarySearch();
        int[] nums = {1, 3, 5, 7, 9};
        int target = 5;
        int result = binarySearch.binarySearch(nums, target);
        if (result != -1) {
            System.out.println("目标元素的索引为: " + result);
        } else {
            System.out.println("目标元素不存在");
        }
    }
}

Im obigen Code binarySearchempfängt die Methode ein geordnetes Array  nums und ein Zielelement  targetund findet den Index des Zielelements im Array mithilfe des binären Suchalgorithmus. Zunächst wird die linke Grenze des Suchintervalls  left auf den Index des ersten Elements des Arrays und die rechte Grenze des Suchintervalls  right auf den Index des letzten Elements des Arrays festgelegt. Durch kontinuierliches Teilen des Suchintervalls in zwei Teile wird dann entsprechend der Größenbeziehung zwischen dem Element in der Mittelposition und dem Zielelement der  Wert von sum left aktualisiert  , right um den Suchbereich einzugrenzen. Wenn schließlich das Zielelement gefunden wird, wird sein Index zurückgegeben. Wenn das Suchintervall leer ist, was darauf hinweist, dass das Zielelement nicht vorhanden ist, wird -1 zurückgegeben.

In der Beispielmethode  werden ein geordnetes Array  und ein Zielelement  main erstellt   die Methode wird aufgerufen, um eine binäre Suche durchzuführen, und das zurückgegebene Ergebnis wird verwendet, um zu bestimmen, ob das Zielelement vorhanden ist, und das Ergebnis wird ausgegeben.numstargetbinarySearch

 

3. Vorteile und Anwendungsszenarien der binären Suche

Die Vorteile der binären Suche Das Potenzial der binären Suche bietet folgende Vorteile des Algorithmus:

  1. Die Komplexität des Zeitpotenzials und des Anwendungsmultiplexbereichs ist gering: Die Szene sieht wie folgt aus:

Vorteile des optimalen binären Suchalgorithmus:

  1. Die zeitkomplexe Zeitkomplexität beträgt O (log n) und die Komplexität ist niedrig: 2, wobei n die Länge des zu durchsuchenden Arrays ist. Die zeitliche Komplexität des Untersuchalgorithmus beträgt O(logn) für jede Suche, wobei n die Reduzierung um die Hälfte des Arrays ist, sodass die Länge der umfangreichen Daten begrenzt ist. Im Vergleich zu O (n) des linearen Suchalgorithmus kann der binäre Suchalgorithmus in kürzerer Zeit suchen und die Effizienz der binären Suche ist sehr hoch.
    2 Suchen Sie das Zielelement.
  2. Effizienz. Anwendbar auf geordnete Arrays: Die binäre Suche erfordert eine Suche: Da der binäre Suchalgorithmus das Array im Suchbereich kontinuierlich in eine bestimmte Reihenfolge unterteilt, kann die positive Dichotomie die Suche jedoch schnell eingrenzen. Aufgrund dieser Funktion ist der Umfang von Die Suche kann reduziert werden. Die Anzahl der Suchvorgänge wird verwendet, um den Suchbereich jedes Mal zu vergleichen und einzugrenzen, die Position des Zielelements schnell zu lokalisieren und die Sucheffizienz zu verbessern.
  3. Gilt zu haben.

Die Anwendungsszenarien der binären Suche sind wie folgt:
1. Ordinales Array: Der binäre Suchalgorithmus erfordert das Finden bestimmter Elemente im geordneten Array: Das zu durchsuchende Array muss geordnet sein, wenn wir etwas in einem geordneten Array finden müssen, aber es Aufgrund dieser Bedingung ist die binäre Suche ein sehr effizienter Algorithmus bei der Erstellung bestimmter Elemente.
Der binäre Suchalgorithmus kann das Zielelement schnell finden. 2. Suche nach Elementen mit einem bestimmten Attribut: Ja.

Anwendungsszenario:

  1. Suche Irgendwann müssen wir nach einem bestimmten Element in einem geordneten Array suchen: Wenn wir nach einem bestimmten Element in einem geordneten Array suchen müssen, um ein Element zu finden, das eine bestimmte Bedingung erfüllt, wie zum Beispiel eine Suche, können wir die binäre Suche verwenden Algorithmus. Beispielsweise müssen Sie in einem Array, das das erste Element enthält, das größer als ein bestimmter Wert ist, oder bei der Suche nach einer großen Datenmenge einen bestimmten Wert finden. Der binäre Suchalgorithmus kommt einer speziellen Methode am nächsten, mit der das Ziel schnell gefunden werden kann Element.

Bei zwei Festwertelementen usw. kann die binäre Suche schnell die Elemente finden, die die Bedingungen erfüllen.
3. Finden Sie die optimale Lösung: Bei einigen Problemen wird die Datenbankindizierung häufig verwendet: Die binäre Suche wird häufig verwendet, und der Lösungsraum des Problems kann auf die Datenbankindizierungstechnologie angewendet werden. Die Datenbank verwendet die binäre Suche, um schnell nach einer bestimmten Regel zu sortieren und zu lokalisieren Die Datensätze, die bestimmte Bedingungen erfüllen, werden mithilfe eines binären Suchalgorithmus gefunden.

Im Allgemeinen ist der binäre Suchalgorithmus die optimale Lösung. Suchen Sie beispielsweise den kleinsten oder größten Wert in einem geordneten Array, der eine Bedingung erfüllt, die zum Suchen eines bestimmten Elements in einem geordneten Array gilt.

  1. Szenarien wie die Suche nach Elementen mit bestimmten Attributen in einem verteilten System. Daten-Sharding: In einem verteilten System liegt sein Vorteil in der effizienten zeitlichen Komplexität und Mäßigkeit. Daten werden normalerweise nach einem bestimmten Schlüsselwort für ein geordnetes Array aufgeteilt, wodurch der Speicher des Zielelements schnell gefunden werden kann. Wenn Sie einen bestimmten Ort finden müssen. Für bestimmte Daten kann der binäre Suchalgorithmus verwendet werden, um den Shard, auf dem sich die Daten befinden, schnell zu lokalisieren und so die Effizienz des Datenzugriffs zu verbessern.

Im Allgemeinen eignet sich der binäre Suchalgorithmus für Szenen, die in einem geordneten Array durchsucht werden müssen, und kann das Zielelement schnell finden. Sein Vorteil liegt in seiner hohen Effizienz und geringen zeitlichen Komplexität und eignet sich für die Suche großer Datenmengen.

Acho que você gosta

Origin blog.csdn.net/2301_77899321/article/details/131594680
Recomendado
Clasificación