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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!