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

  1. //Программная реализация бинарного поиска может иметь следующий вид
  2. Procedure Search;
  3. Var
  4.   i, j, m: Integer;
  5.   f: Boolean;
  6. Begin
  7.   i:=1; j:=N; //На первом шаге рассматривается весь массив
  8.   f:=False; //Признак того, что X не найден
  9.   While (i<=j) And Not f Do
  10.   Begin
  11.     m:=(i+j) Div 2; //Или m:=i+(j-i) Div 2;
  12.     If A[m]=X Then f:=True //Элемент найден, поиск прекращается
  13.       Else If A[m]<X Then i:=m+1 //Исключаем из рассмотрения левую часть A
  14.           Else j:=m-1;
  15.   End;
  16. End;
  17.  
  18.  
  19. //Рекурсивная реализация поиска. Значением переменной t является индекс искомого элемента или ноль, если элемент не найден.
  20. Procedure Search(i,j: Integer; Var t: Integer);
  21. //Массив A и переменная X - глобальные величины
  22. Var m: Integer;
  23. Begin
  24.   If i>j Then t:=0 Else
  25.   Begin
  26.     m:=(i+j) Div 2;
  27.     If A[m]<X Then Search(m+1,j,t) Else
  28.       If A[m]>X Then Search(i,m-1,t) Else t:=m;
  29.   End;
  30. End;
• Подробнее о бинарном (двоичном) поиске в Wikipedia.

  • +3
  • views 990
  • XakepPRO XakepPRO
  • comments 0

Реклама

Мы в соцсетях

tw tg yt gt