Re[2]: Задача 1
От: Аноним  
Дата: 29.11.07 14:21
Оценка:
Благодарю Leonidze,

Позвольте мне прокомментировать код, чтобы было видно что я правильно понял. Поправьте меня пожалуйста, если что не так

type 
  arr_i: array of integer; // Объявляем числовой массив arr_i 

function binary_search(a:arr_i;value:integer):integer; //Создаем функцию двойного поиска и передаем ей 2 параметра, 1- объект a: числового массива arr_i, 2 - value искомое число  
var
  l,r,x:cardinal; // регистрируем локальные количественные переменные l - left, r- right, x 
begin // начало выполнения сценария
  result := -1; //??
  l:=low(a);//передаем  переменной l начальное значение массива = 1. Или это передается ключ начального значения, которым будет 0?
  r:=high(a);//передаем максимальное значение или ключ переменной r
  while l<r do // запускаем цикл, до тех пор пока l<r
    begin
      x := (l+r) shr 1; // что делает shr ?
      if a[x]=value then //тут условие,  если зачение массива, к примеру a[6] равняется значению искомого числа value тогда выполняется следущее
        begin
          result := x; // переменной result передаем ключ x
          break;
        end
      else if a[x]<value then l:=x+1; // если значение массива (к прим. a[6]) меньше искомого числа тогда, перезаписываем переменную l = 6+1 
      else r:=x-1;  //или, перезаписываем переменную r = 6-1 
    end;
  while (result>0) and (a[result-1]=value) do dec(result);// можно пояснить эту строку?
end;


Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.