Beginning Java - Unit 6 Arrays - Binäre Suche

Erinnern Sie sich das Spiel „Ich denke, eine Nummer“ zu spielen. wo die Antworten auf die Aussage „ich von einer Zahl zwischen 1 und 100 denken“ sind „zu hoch“, „zu niedrig“ oder „You Got It!“? Eine Strategie, die oft verwendet wird, wenn dieses Spiel zu spielen ist die Intervalle zwischen der Vermutung und dem Enden des Bereichs in zwei Hälften zu teilen. Diese Strategie hilft Ihnen, schnell auf die gewünschte Anzahl zu verengen um.

Wenn ein Array suchen, verwendet der binäre Suchprozess das gleiche Konzept der Teilungsintervalle in Hälfte als Mittel, den „Schlüssel“ Wert so schnell wie möglich zu finden.

Wenn das Array, das Ihre Daten enthält, um (aufsteigend oder absteigend) ist, können Sie für den Schlüssel Artikel suchen viel schneller durch einen binären Suchalgorithmus ( „Teile und Herrsche“).

Betrachten Sie das folgende Array von ganzen Zahlen:

Array von ganzen Zahlen, mit dem Namen num. in „aufsteigend“ angeordnet !!

Wir werden für die ganze Zahl seiner Suche 77:

Zuerst wird die Mitte des Arrays finden, indem der Array-Index des ersten Wertes zu dem Index des letzten Wertes Addieren und Dividieren durch zwei: (0 + 9) / 2 = 4 Integer der Division wird verwendet, bei der 4. Subskript als die ankommen Mitte. (Die tatsächliche mathematische Mitte wäre zwischen dem 4. und 5. Indizes, aber wir müssen mit ganzzahligen Indizes arbeiten.)
  • Der vierte Index hält die ganze Zahl 52, die vor kommt 77. Wir wissen, dass 77 in diesem Teil des Feldes rechts von 52 sein werden wir nun mit dem gleichen Ansatz, um die Mitte des rechten Teils des Feldes finden. (5 + 9) / 2 = 7
  • Der 7. Subskript hält die ganze Zahl 89, die nach dem 77. Jetzt kommt die Mitte des Abschnitts der Anordnung auf den rechte Seite von 52, aber auf die linke Seite von 89 (5 + 6) / 2 = 5 finden
  • Der fünfte Index hält die ganze Zahl 63, die vor 77 kommt, so dass wir wieder unterteilen
    (6 + 6) / 2 = 6 und die 6. Subskript hält die ganze Zahl 77.

  • Denken Sie daran: Sie mit einem vorsortierten Array beginnen.

    import java.io. *;
    Import BreezyGUI. *;

    public class BinarySearchExample
    public static void main (String [] args)
    int key = 77;
    int [] num = new int [10];
    // Füllen Sie das Array
    for (int i = 0; i < 10; i++)
    num [i] = Console.readInt ( "Enter integer");
    // Das binäre Suchverfahren
    binarysearch (num, 0, 9, key);
    >

    Binäre Suchmethode:
    binarysearch (num, 0, 9, key);

    Die Argumente / Parameter sind:
    Array - der Name einer sortierten Array
    UntereGrenze - Index (Index) erste
    Element zu suchen, array [0]
    Oberegrenze - Index (Index)
    letztes Element zu suchen, array [9]
    Schlüssel. Artikel wollen wir finden.

    // Binary-Suchlauf
    // Diese Methode akzeptiert einen vorsortierten Array, der Index des Startelements für die Suche,
    // der Index des endend Element für die Suche,
    // und die Schlüsselnummer für die wir suchen.
    public static void binarysearch (int [] array, int UntereGrenze, int Oberegrenze, int key)
    int position;
    int comparisonCount = 1; // Zählen der Anzahl von Vergleichen (optional)

    // Um ​​zu beginnen, den Index der mittleren Position zu finden.
    Position = (UntereGrenze + Oberegrenze) / 2;

    In Verbindung stehende Artikel