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 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;