Скачиваний:
129
Добавлен:
10.05.2014
Размер:
32.26 Кб
Скачать

21. Алгоритмы поиска элементов в массиве данных

МАССИВ — а) область машинной памяти, в которой могут размещаться совокупности значений одного и того же типа

б) набор переменных, объединенных общим назначением и имеющих одно имя.

Элемент массива— отдельная переменная, входящая в массив.

Размерность массива— количество элементов, которое содержит массив.

Индекс — числовой или буквенный указатель, которым снабжаются математические выражения для того, чтобы отличать их друг от друга.

Индекс элемента массива — номер элемента в массиве.

Особенность массивов заключается в том, что все элементы массива являются данными одного типа (возможно и структурированного).

  • Списки данных могут быть двух типов – отсортированными или неотсортированными по какому-либо признаку (ключу).

  • Элемент списка являющийся предметом поиска называется целевым элементом.

  • Поиск обычно проводится не для того, чтобы убедиться в наличии того или иного элемента, а с целью получит какие-либо данные соответствующие данному ключу.

Последовательный поиск.

  • Поиск проводится в неотсортированном списке.

  • Последовательно просматривается список элементов, начиная с первого.

  • Элементов списка, соответствующих ключу, может быть несколько.

  • Самый простой анализ – запись порядкового номера элементов в исходном списке, соответствующих ключу.

Общая классификация алгоритмов поиска

1) Все методы можно разделить на статические и динамические. При статическом поиске массив значений не меняется во время работы алгоритма. Во время динамического поиска массив может перестраиваться или изменять размерность.

2) Так же методы поиска можно разделить на методы, использующие истинные ключи и на методы, работающие по преобразованным ключам. В данном случае "ключем" называют то значение, которое мы ищем.

3) Ну и еще вариант классификации - методы основанные на сравнении самих значений и методы, основанные на их цифровых свойствах. Так называемые методы кэширования.

1. Алгоритм поиска по бинарному дереву.

Суть этого алгоритма достаточно проста. Представим себе, что у нас есть набор карточек с телефонными номерами и адресами людей. Карточки отсортированы в порядке возрастания телефонных номеров. Необходимо найти адрес человека, если мы знаем, что его номер телефона 222-22-22. Наши действия? Берем карточку из середины пачки, номер карточки 444-44-44. Сравнивая его с искомым номером, мы видим, что наш меньше и, значит, находится точно в первой половине пачки. Смело, откладываем вторую часть пачки в сторону, она нам не нужна, массив поиска мы сузили ровно в два раза. Теперь берем карточку из середины оставшейся пачки, на ней номер 123-45-67. Из чего следует, что нужная нам карточка лежит во второй половине оставшейся пачки... Таким образом , при каждом сравнении , мы уменьшаем зону поиска в два раза. Отсюда и название метода - половинного деления или дихотомии.

2. Поиск по "дереву Фибоначчи".

Рассмотрим его исключительно из академического интереса. Эффективность его немного выше, чем у поиска по Бинарному дереву.

В дереве Фибоначчи числа в дочерних узлах, отличаются от числа в родительском узле на одну и ту же величину, а именно на число Фибоначчи. Суть метода в том, что сравнивая наше искомое значение с очередным значением в массиве, мы не делим пополам новую зону поиска, как в бинарном поиске, а отступаем от предыдущего значения, с которым сравнивали, в нужную сторону на число Фибоначчи.

Метод Фибоначчи включает в себя только такие арифметические операции, как сложение и вычитание, нет необходимости в делении на 2, тем самым экономится процессорное время! Хочется напомнить, что речь идет о том времени, когда был изобретен метод, а именно - о 60-х годах. В то время процессорное время можно было экономить на подобных подходах.

3. Метод экстраполяций.

Массив значений - это словарь, все значения в нем отсортированы по алфавиту. Искомое слово нам известно. Значит сейчас мы будем искать в отсортированном массиве.

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

Соседние файлы в папке Ответы на вопросы по информатике прошлых лет