Module: Lineare und binäre Suche nach Elementen in einem Array


Problem

6/7

Binäre Suche

Theory Click to read/hide

Doppelsuche
Die duale (oder binäre) Suche ist ein effektiver Suchalgorithmus, der schneller durchgeführt wird als eine lineare Suche. Beispielsweise wird für einen Cluster von 1024 Elementen eine lineare Suche im schlimmsten Fall (wenn das Element nicht in der Masse ist) alle 1.024 Elemente abdecken, aber eine binäre Suche wird ausreichen, um 10 Elemente zu verarbeiten. Dieses Ergebnis wird erreicht, indem der Suchbereich nach dem ersten Schritt des Zyklus auf 512 Elemente reduziert wird, nach dem zweiten Schritt auf 256, etc.
Mangel an einem solchen Algorithmus ist die Anforderung der Konsistenz von Daten, sowie die Möglichkeit des Zugriffs auf jedes Datenelement für konstante (nicht aufgrund der Anzahl der Daten) Zeit. So kann der Algorithmus nicht an unregulierten Massen arbeiten.
Algorithmen
  1. Wählen Sie das mittlere Element A[c] und vergleichen X
  2. wenn X = A[c]Sie haben es gefunden.
  3. wenn X < A[c]nach der ersten Hälfte suchen.
  4. wenn X > A[c]nach der zweiten Hälfte suchen.
Durchführung
L = 0; R = N; /
während (L PER R - 1)
{~}
c = (L + R) / 2; / gefunden Mitte
wenn (X PER A[c] ) // Kompression des Cut-offs
R = c;
andere
L = c;
♪
wenn (A[L)
âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa âTMa â
andere
cout copy paris nicht gefunden;


Wo:
А - die Referenzmasse,
N Größe der Masse,
X - die angegebene Zahl,

Eine weitere Umsetzung ist möglich.
Zum Beispiel mit vorzeitiger Ausfahrt aus dem Zyklus
L = 0; R = N - 1;
(R grad=L)
{~}
c = (L + R) / 2;
wenn (SPANTING)
{~}
nX = c;
Bruch
♪
wenn (X PER A[c)) R = Mitte - 1;
wenn (X Entlüftung A[c)) L = Mitte + 1;
♪
wenn (nX PER 0)
cout copy paris nicht gefunden;
andere
cout PERPEN "A[" À À À À À À À À À À ᐅ À À À À À À À À À À À À À À À ̄ À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À À 

Problem

In einem angegebenen Array, aufsteigend sortiert, müssen Sie mithilfe einer binären Suche nach dem Elementwert suchen, der dem Wert von X entspricht. X wird über die Tastatur eingegeben. Bearbeiten Sie das Programm, damit es das Problem löst Die Nummerierung der Elemente beginnt bei Null. Wenn es kein solches Element gibt, sollte das Programm Not found ausgeben.