![]() |
![]() ![]() ![]() ![]() |
|
Бинарный поиск в целочисленном массивеDelphi , Синтаксис , Массивы
Автор: Mystic
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Бинарный поиск
Бинарный поиск в целочисленном массиве - шаблон для функции,
выполняющей бинарный поиск.
X - значение, которое ищеться
A - массив в котором происходит поиск.
возвращаемое значение
индекс элемента, начиная с которого значения в массиве превышают заданное значение
в случае точного поиска заменить строку Result := L и -1 будет свидетельствовать
о том, что значение не найдено.
Зависимости: System
Автор: Mystic, mystic2000@newmail.ru, ICQ:125905046, Харьков
Copyright: Mystic
Дата: 25 апреля 2002 г.
***************************************************** }
function BinaryFind(X: Integer; A: array of Integer): Integer;
function RecurceFind(L, R: Integer): Integer;
var
M: Integer;
begin
if R < L then
begin
Result := L; // Result := -1 если поиск точный
Exit;
end;
M := (L + R) div 2;
if A[M] = X then
begin
Result := M;
Exit;
end;
if A[M] > X then
Result := RecurceFind(L, M - 1)
else
Result := RecurceFind(M + 1, R)
end;
begin
Result := RecurceFind(Low(A), High(A));
end;
Перевод контента на русский язык: Это реализация алгоритма двоичного поиска в Delphi на языке Pascal. Функция Разбивка кода:
Предложение альтернативного решения: Вместо использования рекурсивной функции можно использовать реализацию двоичного поиска с использованием цикла. Это может быть более эффективно и проще для понимания для некоторых разработчиков. Пример реализации: Эта реализация имеет тот же временной сложность (O(log n)) что и рекурсивная версия, но может быть более эффективной на практике из-за уменьшенного накладного времени. Бинарный поиск в целочисленном массиве - функция, реализующая алгоритм бинарного поиска для нахождения индекса элемента, начиная с которого значения в массиве превышают заданное значение. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||