Методы поиска в массиве данных
1. Последовательный поиск
Блок-схема алгоритма 1
2. Быстрый последовательный поиск
Блок-схема алгоритма 2
3. Бинарный (дихотомический) поиск
Блок-схема алгоритма 3
Пример бинарного поиска
Продолжение примера
204.00K
Category: informaticsinformatics

Методы поиска в массиве данных

1. Методы поиска в массиве данных

Восточно-Сибирский государственный технологический
университет
Кафедра «Системы информатики»
Структуры и алгоритмы
обработки данных
Лекция по теме:
Методы поиска в массиве данных
Бильгаева Людмила Пурбоевна,
к.т.н., доцент
Улан-Удэ, 2010

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

Дана последовательность записей
R1, R2, …, RN
с ключами k1, k2, …, kN.
Алгоритм предназначен для поиска
элемента последовательности с
заданным ключом k при N 1

3. Блок-схема алгоритма 1

i=1
k = ki
i++
нет
да
i= N
нет
неудача
да
удача

4. 2. Быстрый последовательный поиск

В отличие от предыдущего алгоритма
здесь предполагается, что в конце
последовательности имеется
фиктивный элемент RN+1, равный
искомому ключу k

5. Блок-схема алгоритма 2

i=1
kN+1 = k
i++
k = ki
нет
да
нет
i= N
да
удача
неудача

6. 3. Бинарный (дихотомический) поиск

С помощью данного алгоритма
разыскивается элемент
последовательности записей
R1, R2, …, RN,
ключи которых расположены в
возрастающем порядке:
k1< k2 < … < kN

7. Блок-схема алгоритма 3

l=1
u=N
l= u
нет
да
неудача
i= (l+u)div2
да
k < ki
да
u = i-1
нет
k = ki
нет
l = i+1
да
удача

8. Пример бинарного поиска

Дана последовательность из 9 элементов:
5, 4, 8, 1, 3, 7, 2, 9, 10
необходимо найти элемент, равный 7.
Решение: 1. Упорядочить по возрастанию
исходную последовательность.
1, 2, 3, 4, 5, 7, 8, 9, 10
2. Найти средний элемент путем деления
нацело общего числа элементов.
9div2=4, ki=4, k=7.
3. Поскольку k>ki, то дальнейший путь
поиска вычисляется следующим образом:

9. Продолжение примера

l = 4+1 = 5
4. Найти сумму l и u, l+u=5+9=14
5. Найти средний элемент, как
ki=14div2=7
6. В результате сравнения k=ki.
Таким образом, искомый элемент найден и
равен 7.
English     Русский Rules