Als Beispiel betrachten wir eine lineare Tabelle a der Länge max, in der die Daten aufsteigend geordnet ab 1 bis zu einer Füllhöhe n abgelegt sind. Unsere Teil-Datenstrukturen sind Ausschnitte aus der Tabelle mit den Grenzen l und r, und als Einstieg verwenden wir jeweils die Mitte einer Teiltabelle. Für l>r ist die Teiltabelle leer. Ein Ergebnis wo=0 soll bedeuten: nichts gefunden.
Dieses Verfahren nennt man binäre Suche oder auch logarithmische Suche, weil es den Aufwand (log n) hat; so etwa suchen wir auch in einem Telefonbuch.PROCEDURE binsuche(k: keytype; n: CARDINAL; VAR wo: CARDINAL); VAR Zustand: (suchen, ja, nein); BEGIN Zustand := suchen; WHILE Zustand = suchen DO IF l > r THEN wo := 0; Zustand := nein; ELSE wo := (l + r) DIV 2; IF k = a[wo].key THEN Zustand := ja ELSIF k < a[wo].key THEN r := wo - 1 ELSE (* k > a[wo].key *) l := wo + 1 END; END; END; END binsuche;
D.E.Knuth schreibt darüber 1968 in seinem Standardwerk "The Art of Computer Programming" folgendes:
Although the basic idea of binary searching is comparatively straightforward, the details can be somewhat tricky, and many good programmers have done it wrong the first few times they tried.Mit unserem Ansatz, der den Suchzustand mitrechnet, muß man sich inzwischen wohl eher anstrengen, um Fehler zu machen. Wir vermuten: das liegt daran, daß wir auf einer recht hohen Abstraktionsebene eingestiegen sind, auf der man klar sieht, worauf es ankommt.