Студопедия — Двоичный поиск
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Двоичный поиск






Двоичный (или бинарный) поиск основан на итерационном сравнении ключа поиска со средним элементом массива.

При каждой итерации интервал анализа делится пополам (на 2): 1/2, 1/4, 1/8 и т.д., откуда этот метод поиска и получил свое название (ещё один вариант названия – дихотомический). В зависимости от результата сравнения, выбирается нижний или верхний интервал. Процесс продолжается до тех пор, пока не будет найдено совпадение или длина интервала анализа не станет равной единице, и если при этом нет совпадения, то фиксируется неудача поиска.

Этот метод поиска значительно эффективнее чем последовательный поиск, но требует, чтобы данные были предварительно упорядочены (отсортированы).

В худшем случае выполняется не более

log2(N) + E

сравнений (где E < 0.0861), в связи с чем двоичный поиск ещё называется "логарифмическим поиском".

 

Программа двоичного поиска на языке "Паскаль" function search_b(item: ^real; n: integer; key: real):integer; var low, high, mid: integer; begin search_b:= -1; low:= 0; high:= n-1; while low <= high do begin mid:= (low + high) / 2; if key < item[mid] then hig:= mid - 1 else if key > item[mid] then low:= mid + 1 else search_b:= mid end end;

 

Аналогичная процедура на языке Си++:
int search_b(float* item, int n, float key)
{
int low, high, mid;
low = 0;
high= n - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (key < item[mid])
high = mid - 1;
else
if (key > item[mid])
low = mid + 1;
else
return mid;
}
return -1;
}

Существуют модификации алгоритма:

· с двумя переменными вместо low, high, mid (нижней, верхней границы и середины интервыла анализа) - текущее положение и величина его изменения. Такой метод требует аккуратности;

· алгоритм со вспомогательными таблицами.

Поиск с использованием чисел Фибоначчи

F(n) = F(n−1) + F(n−2), F(0) = 0, F(1) = 1, F(2) = 1,...

F = 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,... Числа Фибоначчи используются вместо степеней двойки при делении интервала. В данном случае вместо деления используются только сложение и вычитание. Для этого требуется таблица чисел Фибоначчи, или процедура их вычисления, исходя из длины интервала. Данный метод проще реализуется при размере массива, на 1 меньше очередного числа Фибоначчи N + 1 = Fk.







Дата добавления: 2015-09-04; просмотров: 383. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Понятие массовых мероприятий, их виды Под массовыми мероприятиями следует понимать совокупность действий или явлений социальной жизни с участием большого количества граждан...

Тактика действий нарядов полиции по предупреждению и пресечению правонарушений при проведении массовых мероприятий К особенностям проведения массовых мероприятий и факторам, влияющим на охрану общественного порядка и обеспечение общественной безопасности, можно отнести значительное количество субъектов, принимающих участие в их подготовке и проведении...

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

Упражнение Джеффа. Это список вопросов или утверждений, отвечая на которые участник может раскрыть свой внутренний мир перед другими участниками и узнать о других участниках больше...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия