Home » Tipps & Tricks » Algorithmen » Suchen » Lineare Suche

Lineare Suche

Um in einem unsortierten Array einen Wert zu finden, müssen alle Elemente des Arrays mit diesem Wert verglichen werden. Dabei wird mit dem ersten Element begonnen und bis zum letzen Element auf eine Übereinstimmung geprüft, d.h. die Suche erfolgt sequenziell. Findet sich keine Übereinstimmung, ist der Wert in dem Array nicht vorhanden.

Im schlechtesten Fall (auch Worst-Case genannt) müssen alle Elemente durchsucht werden, und zwar, wenn der Wert im Array nicht vorhanden ist. Die Anzahl der Überprüfungen entspricht dann also der Länge des Arrays. Im besten Fall (auch Best-Case genannt) muss nur ein Element überprüft werden, und zwar, wenn das erste Element diesem Wert entspricht. Dabei muss nur eine einzige Überprüfung durchgeführt werden.

Wenn nun mit diesem Verfahren nach einem Wert in einem Array gesucht werden soll, ist die durchschnittliche Anzahl an Prüfungsvorgängen (auch Average-Case genannt) die Hälfte der Länge des Arrays.
Folgende Funktion setzt das Verfahren um:

type
  TIntArray: array [0..100] of Integer;

function FindInArray(AArray: TIntArray; AValue: Integer): Integer;
var
  i: integer;
begin
  Result := -1;
  for i := 0 to high(AArray) do
  begin
    if AArray[i] = AValue then
    begin
      Result := i;
      Break;
    end;
  end;
end;

AArray ist das Array, welches durchsucht werden soll, AValue ist der zu findende Wert. Der Rückgabewert entspricht der Position des ersten gefundenen Elements mit dem Wert von AValue. Existiert kein Element mit diesem Wert, ist der Rückgabewert -1.