Учебное пособие Самара 2015 + 004. 43 Ббк 32. 973 Н 19


Download 1.98 Mb.
bet44/53
Sana15.08.2023
Hajmi1.98 Mb.
#1667321
TuriУчебное пособие
1   ...   40   41   42   43   44   45   46   47   ...   53
Bog'liq
Lekcii AiSD 2015

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



Ряд чисел Фибоначчи определяется как
F( п) —— F(n— 1) + F(n—2),
F(0) = 0, F( l) = 1, F(2) = 1,

(12.2)


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


12.3. Специальные виды поиска


Мнтерполяционный поиск произошел от естественного поиска данных в упорядоченном массиве человеком. Если из- вестно, что искомый ключ k находится между некоторым «ниж- ним» ключом k и некоторым «верхним» ключом +h:
(12.3)

то следующее сравнение делается на расстоянии


(I — h)( k — i ! h I (12.4)

от текущей позиции k,. Предполагается что данные в массиве возрастают в арифметической прогрессии.


Именно по такому алгоритму выполняется поиск нужной
карточки в "бумажном" библиотечном каталоге, или страницы в
книге.
Этот алгоритм эффективнее бинарного поиска только в слу- чае арифметической прогрессии, так как на каждом шаге умень- шает интервал анализа не до п/2 а до in, и требует в среднем око-
163

лО log2(log2 V шагов, если упорядоченные данные имеют рав- номерное распределение.
Недостаток этого алгоритма — затраты времени на дополни- тельные операции при внутреннем поиске. Разница между lOg2(lOg2 *'7) Й log2 *'Ј становится весьма существенной при бoльтнx N, а типичные наборы данных (которыми для этого по- иска часто являются файлы) обычно считаются недостаточно случайными.
Этот алгоритм может быть достаточно успешным при поис- ке во внешних запоминающих устройствах.
Ещё один специальный случай поиска — это поиск вхожде- ния некоторой подстроки в строку. Для поиска подстроки в строке могут использоваться алгоритмы Бойера—Мура (п его не- сколько модификаций) и Кнута—Морриса—Мратта.


Вопросы н задания для самоконтроля



    1. Что такое поиск?

    2. Что называется ключом поиска?

    3. Какие известны методы поиска?

    4. К каким структурам данных может применяться опе- рация поиска?

    5. Какой из основных алгоритмов поиска является наибо-

лее эффективным?

    1. Какое требование предъявляется к структуре данных, в

которой выполняется двоичный поиск?

    1. Чем отличается поиск в массиве от поиска в списке?

    2. Чем отличаются процедуры поиска в односвязном и двусвязном списках?

    3. В чем заключается метод линейного поиска?

    4. В чем заключается метод двоичного поиска?

    5. Почему двоичный поиск получил такое название?

    6. Какие известны варианты двоичного поиска?

    7. Пригоден ли двоичный метод для поиска данных в

неупорядоченной структуре?

    1. Какой из методов поиска данных в массиве является

более универсальным?
164

    1. Существуют ли какие-нибудь недостатки у линейного поиска? Если да, то какие?

    2. Какова трудоёмкость линейного поиска?

    3. Перечислите особенности последовательного поиска.

    4. В каких случаях применяется последовательный по-

иск?

    1. Перечислите достоинства и недостатки последова-

тельного поиска.

    1. Соблюдение какого условия необходимо для приме- нения к структуре данных двоичного поиска?

    2. Какими достоинствами обладает двоичный поиск?

    3. Какова трудоёмкость двоичного поиска?

    4. Предложите эффективный алгоритм поиска в массиве упорядоченных неуникальных данных.

165
13. Сортировка


Чтобы воспользоваться эффективными алгоритмами поиска, данные должны быть упорядочены в том или ином порядке, ина- че говоря, отсортированы.


Сортировка (или упорядочение), также как и поиск, является одной из часто используемых при обработке данных операций и применяется ко многим структурам данных: массивам, связным спискам, деревьям и графам.
Существуют свидетельства, что первой программой для ЭВМ с хранимой программой (с архитектурой Джона фон Ней- мана) была именно программа сортировки [8].




    1. Download 1.98 Mb.

      Do'stlaringiz bilan baham:
1   ...   40   41   42   43   44   45   46   47   ...   53




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling