Бинарный поиск в целочисленном массиве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 прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |