Thema: Delphi Binäre Suche rekursiv

Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Binäre Suche rekursiv

  Alt 18. Sep 2006, 17:43
Hi,
ich versuche gerade just for fun eine binäre Suche zu programmieren, doch irgendwie funktioniert bei mir die Rekursion nicht richtig.

Delphi-Quellcode:
type
  TEntry = record
    n_name: string;
    v_name: string;
  end;
  TList = array[1..lg] of TEntry;

function binsuche(nname: string; list: TList; index: integer): integer;
var
  tdx: integer;
begin
  if list[index].n_name = nname then begin
    Result := index;
    Exit;
  end;

  if list[index].n_name > nname then
    tdx := index div 2
  else
    tdx := (index + lg) div 2;

  if tdx <> index then
    Result := binsuche(nname, list, tdx)
  else
    Result := -1;
end;
Ich habe ein Testfeld mal recht willkürlich belegt:

Delphi-Quellcode:
procedure belege(var list: TList);
begin
  List[1].n_name := 'Adams';
  List[1].v_name := 'Douglas';

  List[2].n_name := 'Bauer';
  List[2].v_name := 'Joachim';

  List[3].n_name := 'Daniels';
  List[3].v_name := 'Jack';

  List[4].n_name := 'Gorbatschow';
  List[4].v_name := 'Michail';

  List[5].n_name := 'Müller';
  List[5].v_name := 'Karl-Otto';
end;
Wenn ich nun nach dem fünften Eintrag suche (Müller), dann findet meine binäre Suche keinen Eintrag. Woran kann das liegen?

Chris
  Mit Zitat antworten Zitat