program Searches; const max=30000; var F: array[1..max] of word; S4: word; sp: integer; comp: integer; procedure Init; var x: word; i: word; begin comp := 0; x := 0; for i:=1 to max do begin x := x + Random(3) + 1; F[i] := x; end; end; procedure SearchFor; var x: integer; begin WriteLn('Geben Sie die Arrayposition des zu suchenden Elements ein!'); Write('(Zahl zwischen 1 und ',max:0,'): '); ReadLn(x); S4 := F[x]; Write('Suche jetzt nach ',S4,' '); end; function bin_searchrekursiv(left, right, key: word): word; var x,n: word; begin Inc(comp); Write('.'); if left>right then bin_searchrekursiv:=0 else begin x := (left+right) DIV 2; if key < F[x] then bin_searchrekursiv:=bin_searchrekursiv(left, x-1, key) else if key > F[x] then bin_searchrekursiv:=bin_searchrekursiv(x+1,right, key) else bin_searchrekursiv := x; end; end; function bin_searchiterativ(key: word): word; var left, right, x: word; begin left := 1; right := max; repeat x := (left + right) DIV 2; if key<F[x] then right := x-1 else left := x+1; Inc(comp); Write('.'); until (key=F[x]) OR (left>right); if key=F[x] then bin_searchiterativ := x else bin_searchiterativ := 0; end; procedure Stats; begin WriteLn(' gefunden an Stelle ',sp:0); Write(comp:0,' Vergleichsoperation'); if (comp>1) then WriteLn('en') else WriteLn; end; begin Randomize; Init; SearchFor; { sp := bin_searchiterativ(S4); } sp := bin_searchrekursiv(1,max,S4); Stats; WriteLn('<=======****=======>'); end.