Function SearchBin (Arr : array of Integer; v, n : Integer) : Integer;



Var

Up, Down, Mid : Integer;

Found : Boolean;

Begin

Up := 0; Down := n;

Found := False; Result := -1;

Repeat

 Mid := Trunc ((Down - Up) / 2) + Up;

 if Arr [Mid] = v then

 Found := True

Else

 if v < Arr [Mid] then

 Down := Mid - 1

Else

                                    Up := Mid + 1;

 until (Up > Down) or Found;

If Found then

 Result := Mid;

End;

Двоичный поиск - очень мощный метод. Если, например, длина массива равна 1023, после первого сравнения область сужается до 511 элементов, а после второй - до 255. Легко посчитать, что для поиска в массиве из 1023 элементов достаточно 10 сравнений.


Дата добавления: 2021-01-21; просмотров: 65; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!