Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_za_fevral.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
406 Кб
Скачать
☆

2. Прямой поиск в упорядоченной таблице

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

Бинарный поиск (дихотомический, логарифмический).

Суть его: сначала сравнить К со средним ключом в таблице; по результату сравнения можно определить, в какой половине таблицы продолжить поиск, применяя при этом ту же процедуру. После не более чем log2N сравнений либо ключ будет найден, либо установлено его отсутствие.

Алгоритм В (бинарный поиск). Найти аргумент К в таблице записей R1,R2,…,Rn, ключи которых упорядочены по возрастанию: K1<K2<…<KN. Пусть iнач и iкон – соответственно номера начальной и конечной записей в той области, в которой осуществляется поиск.

⌊·⌋ - целая часть (trunc).

Представим бинарный поиск в виде бинарного дерева решений. Пусть N=16. Тогда «середина» , => К8 – ключ, соответствующий «середине» и первым (корневым) круглым узлом дерева будет 8.

Если К < К8, то поиск проводится в левом поддереве, сравнивая К с новой «серединой» К4 и т.д. Если К > К8, то поиск идёт в правом поддереве.

Неудачный поиск ведёт в один из внешних квадратных узлов от 0 до N. Например, узел 6 будет достигнут тогда и только тогда, когда К6 < К < К7.

С помощью дерева можно доказать, что справедлива теорема:

При 2k-1≤N≤2k удачный поиск, использующий алгоритм В, требует минимум 1, максимум К сравнений. Неудачный поиск требует k сравнений при N=2k-1 либо k-1 или k сравнений при 2k-1 ≤ N <2k-1.

Следствие: алгоритм В требует максимум [log2N]+1 сравнений, среднее число сравнений при удачном поиске .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]