Страница 1 из 1

Бинарный поиск в сортированном массиве. Delphi

Добавлено: 10 апр 2009, 17:48
GRIPH
В общем на кнопку забил процедуру:

Код: Выделить всё

procedure TForm1.Button8Click(Sender: TObject);
var 
  L,R,m,x,N:integer;
  found:boolean;
begin
  x:=StrToInt(Edit2.Text);
  L:=0;
  N:=Length(Arr);
  R:=N-1;
  found := FALSE;
  WHILE (L <= R) AND NOT found DO
    m := (L + R) div 2;
  IF Arr[m] = x THEN
  begin
    found := TRUE;
    IF Arr[m] < x THEN L := m+1
    ELSE R := m-1;
  End;
  if found then ShowMessage('FOUND!') else ShowMessage('Not FOUND!');
End;
Искать, он ищет, но выводить сообщение не хочет. И ещё помогите как узнать номер найденного элемента. Т.е. если найдет, то каким по счету он стоит в массиве.

Массив динамический. Берется из списка TList.

Re: Бинарный поиск в сортированном массиве. Delphi

Добавлено: 10 апр 2009, 23:55
Naeel Maqsudov
Тема перемещена в более подходящий раздел.

Разберитесь с операторными скобками. У вас тут все наперекосяк получилось

WHILE (L <= R) AND NOT found DO
m := (L + R) div 2;

- это весь цикл.
После цикла условие Arr[m] = x не выполняется и всегда получается что found=false.

Погоняйте эту программу под отладчиком. F8 вам однозначно поможет все понять.

Номер найденного элемента - это m

Re: Бинарный поиск в сортированном массиве. Delphi

Добавлено: 12 апр 2009, 15:22
GRIPH
Все равно никак не могу разобраться... Всю голову уже переломал...

Re: Бинарный поиск в сортированном массиве. Delphi

Добавлено: 13 апр 2009, 11:05
Игорь Акопян
я щаз ваш пост отредактирую поставив нормальные отступы и будет понятнее ;)

Re: Бинарный поиск в сортированном массиве. Delphi

Добавлено: 13 апр 2009, 22:00
GRIPH
Всё :) Спасибо, дело все было в операторных скобках после while... забыл, и поэтому ничего остальное не выполнялась, у меня теперь другая проблема.. В другой теме написал :)

Re: Бинарный поиск в сортированном массиве. Delphi

Добавлено: 05 май 2009, 14:08
Tanja
Здравствуйте помогите пожалуйста составить программу для нахождения минимвального числа в одномерном массиве состоящем из n-натуральных чисел полученных случайным образом. на Паскале. Очень срочно надо.