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