Я думаю тут не обязательно надо бд строить... главное чтобы двоичный поиск был осуществлен..
Вот еще один вариант... только он тоже не особо работает я не могу понять почему... =(
Код:
function BSearch (item: array of integer; count:integer;
key:integer):boolean;
var
low, high, mid,k: integer;
found:boolean;
begin
k:=0;
low:=1;
high:=count;
found:=false; { не найден }
while (low<=high) and (not found) do
begin
k:=k+1;
mid:=(low+high) div 2;
if key<item[mid] then high:=mid-1
else if key>item[mid] then low:=mid+1
else found:=true; { найден }
end;
if found then BSearch:=true
else BSearch:=false; { не найден }
end; { конец поиска }
procedure TForm1.Button1Click(Sender: TObject);
var i,k,l,c:integer; m:boolean;
a:array[1..20] of integer;
begin
if Edit1.Text<>'' then
begin
Memo1.Clear;
l:=StrToInt(Edit1.Text);
for i:=1 to 20 do
a[i]:=StrToInt(Memo2.Lines[i-1]);
m:= BSearch (a[i],20,l);
if m=true then
begin
Memo1.Lines.Add('Результат поиска=: '+'найдено');
Memo1.Lines.Add('Число сравнений=: '+IntToStr(k));
end
else Memo1.Lines.Add('Результат поиска=: '+'не найдено');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Clear;
Memo1.Clear;
end;
извиняюсь, файл не могу прикрепить... весит много слишком