Двоичный поиск: различия между версиями
| [непроверенная версия] | [непроверенная версия] |
Нет описания правки |
Нет описания правки |
||
| Строка 1: | Строка 1: | ||
{{algorithm | {{algorithm | ||
| name = Бинарный поиск | | name = Бинарный поиск | ||
| serial_complexity = | | serial_complexity = <math>\log_2 n</math> | ||
| pf_height = | | pf_height = ? | ||
| pf_width = | | pf_width = ? | ||
| input_data = | | input_data = упорядоченный массив длины <math>n</math>, число <math>A</math> | ||
| output_data = | | output_data = индекc элемента | ||
}} | }} | ||
Основные авторы описания: [[User:AntonChupin|А. В. Чупин]]. | Основные авторы описания: [[User:AntonChupin|А. В. Чупин]]. | ||
Синонимы названия метода: '''двоичный поиск''', '''бинарный поиск''', '''метод деления пополам''', '''дихотомия'''. | |||
== Свойства и структура алгоритма == | == Свойства и структура алгоритма == | ||
=== Общее описание алгоритма === | === Общее описание алгоритма === | ||
'''Метод | '''Метод двоичного поиска''' используется в качестве быстрого варианта поиска в заранее отсортированном массиве. Получил распространение благодаря как наименьшей из возможных высоте алгортима, так и из-за ряда своих вычислительных характеристик, а также (в среде нечисленных алгоритмов) из-за своей рекурсивности, то есть лёгкости записи. | ||
=== Математическое описание алгоритма === | === Математическое описание алгоритма === | ||
Версия от 08:34, 29 июня 2016
| Бинарный поиск | |
| Последовательный алгоритм | |
| Последовательная сложность | [math]\displaystyle{ \log_2 n }[/math] |
| Объём входных данных | упорядоченный массив длины [math]\displaystyle{ n }[/math], число [math]\displaystyle{ A }[/math] |
| Объём выходных данных | индекc элемента |
| Параллельный алгоритм | |
| Высота ярусно-параллельной формы | ? |
| Ширина ярусно-параллельной формы | ? |
Основные авторы описания: А. В. Чупин.
Синонимы названия метода: двоичный поиск, бинарный поиск, метод деления пополам, дихотомия.
Свойства и структура алгоритма
Общее описание алгоритма
Метод двоичного поиска используется в качестве быстрого варианта поиска в заранее отсортированном массиве. Получил распространение благодаря как наименьшей из возможных высоте алгортима, так и из-за ряда своих вычислительных характеристик, а также (в среде нечисленных алгоритмов) из-за своей рекурсивности, то есть лёгкости записи.
Математическое описание алгоритма
Исходные данные: одномерный массив [math]\displaystyle{ n }[/math] чисел, упорядоченный по возрастанию (точнее - неубыванию) или убыванию (точнее - невозрастанию), а также число [math]\displaystyle{ A }[/math], которое нужно найти в этом массиве.
Вычисляемые данные: индекс элемента, равного искомому (или ответ, что такого элемента нет).
Формулы метода: элементы на каждом этапе алгоритма рассматриваются в виде непрерывного отрезка массива. В каждой из пар находится сумма составляющих её элементов. На следующем этапе на пары разбиваются уже эти суммы (и те элементы, которые не вошли в уже вычисленные суммы), и т. д.
Вычислительное ядро алгоритма
Вычислительное ядро последовательно-параллельного метода суммирования можно составить как из операций сравнения и получения середины отрезка, так и (рекуррентно) из набора реализаций метода бинарного поиска в массиве меньшего размера.
Макроструктура алгоритма
Схема реализации последовательного алгоритма
Последовательная сложность алгоритма
Информационный граф
Ресурс параллелизма алгоритма
Входные и выходные данные алгоритма
Входные данные: массив [math]\displaystyle{ x }[/math] (элементы [math]\displaystyle{ x_i }[/math]). Число [math]\displaystyle{ A }[/math].
Дополнительные ограничения: массив упорядочен.
Объём входных данных: [math]\displaystyle{ n }[/math].
Выходные данные: индекс элемента [math]\displaystyle{ A }[/math] в массиве, если он есть.
Объём выходных данных: один скаляр.
Свойства алгоритма
Программная реализация алгоритма
Особенности реализации последовательного алгоритма
Обычно в качестве ответа выводят -1, если число не найдено.