Как реализовать поиск?
3 ноября 2014 г. Просмотров: 667
При разработке алгоритмов для решения многих задач часто встает проблема реализации поиска определенной группы данных по заданным критериям. При исследовании упорядоченной или неупорядоченной последовательности поиск может осуществляться с помощью разных методов. В общем случае для решения задачи поиска рассматривают определенный массив данных, в котором требуется найти заданный элемент. Самый простой способ поиска известного элемента в массиве данных – это прямой перебор его значений. Данный алгоритм оптимален для небольших объемов информации. Суть его заключается в прохождении по известной последовательности данных (массиву) и сравнивание каждого элемента с искомым значением. При обнаружении совпадения в зависимости от заданных критериев поиск может быть завершен либо продолжен до конца массива. Однако несмотря на простоту реализации данного метода, его использование нежелательно в массивах, содержащих большие объемы информации, так как при этом значительно повышается ресурсоемкость алгоритма. Для оптимальности поиска в этом случае лучше выполнить предварительную сортировку значений в массиве и реализовать алгоритмы поиска: по бинарному дереву, по дереву Фибоначчи, методом экстраполяций. При работе с упорядоченным массивом используйте более эффективный алгоритм – метод бинарного поиска. Его суть заключается в том, что в процессе перебора границы промежутка приближаются друг к другу, таким образом сужая область поиска. Сравните искомое значение со средним по номеру элементом массива. При совпадении образца с элементом задача считается решенной. Если искомое больше среднего элемента, значит, дальнейший поиск необходимо проводить в части массива, расположенной правее среднего элемента (от начала массива до среднего элемента-1). Если искомое меньше среднего элемента, значит, поиск продолжается в части массива от среднего до последнего элемента. Определив новую область для поиска, описанный алгоритм повторяется, определяя совпадения или сужая область обработки. Данная схема верна для массива, упорядоченного по убыванию. Частные задачи поиска минимального или максимального элемента в заданной последовательности решаются путем назначения начального элемента в качестве искомого. Далее проводится последовательный перебор остальных значений массива: второго с первым, третьего с первым и т.д. При сравнивании взятого за эталон значения выясняется, есть ли в массиве элемент более соответствующий поставленному условию (минимум или максимум). При нахождении такового, за эталон принимается уже он, а перебор продолжается с текущей позиции до конца массива. В результате минимальным (или максимальным) значением в данной группе признается тот элемент, который последним был признан за эталон.
Оцените статью!