Показать сообщение отдельно
  #3  
Старый 28.05.2009, 09:52
Athen Athen вне форума
Прохожий
 
Регистрация: 27.11.2007
Сообщения: 16
Репутация: 10
Печаль

Я думаю тут не обязательно надо бд строить... главное чтобы двоичный поиск был осуществлен..
Вот еще один вариант... только он тоже не особо работает я не могу понять почему... =(
Код:
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;

извиняюсь, файл не могу прикрепить... весит много слишком
Ответить с цитированием