
Поиск данных.ppt
- Количество слайдов: 15
Поиск данных План занятия 1. Линейный поиск. 2. Бинарный поиск. 3. Случайный поиск. 4. Поиск элемента произвольного массива за линейное время. 5. Поиск второго минимального элемента в массиве.
Случайный поиск • Пусть необходимо найти k-й по порядку элемент в неупорядоченном массиве A. • Будем использовать идею бинарного поиска следующим образом: 1. Выбирается случайным образом элемент с номером q. 2. Массив A разбивается на три части: элементы, меньшие A[q], равные A[q] и большие A[q]. 3. В зависимости от количества элементов в каждой части, выбирается одна из частей для дальнейшего поиска.
Поиск элемента массива за линейное время • Требуется уметь сортировать массив из 5 элементов за 7 сравнений - Sort(N, A), где N – количество элементов в массиве A. • Идея алгоритма базируется на бинарном поиске.
• Из отсортированных пятиэлементных массивов формируется массив из средних элементов – медиан (M). • В массиве M выбирается средний элемент m и относительно него исходный массив разбивается на три части, как в предыдущей схеме случайного поиска.
• В части A на рис. выделены элементы, заведомо большие m, в части B – меньшие m. • За счет однократного применения действий этой схемы, как минимум, четвертая часть элементов исходного массива исключается из дальнейшего поиска.
Поиск второго минимального элемента в массиве • Известно, что второй минимальный элемент в массиве из N элементов можно найти за N+ log 2 N – 2 сравнений. • Пример, при N=8 это 9 сравнений. • Очевидно, что без поиска минимального элемента найти второй минимальный невозможно. • Поиск минимального элемента требует N– 1 сравнений. Осталось log 2 N – 1 сравнение.
• Если искать по прежней схеме, исключив найденный элемент, то потребуется еще N– 2 сравнения, а в сумме 2∙N– 3 сравнения. • При этом мы как бы забываем то, что делали на первом шаге. • Вывод – нужно создавать некую дополнительную информацию на первом шаге и использовать её для поиска второго минимального элемента.
Но как это сделать? • Пусть N=8 • Массива А : 81, 34, 2, 90, 51, 45, 14, 31. • Схема поиска минимального элемента: Сравниваем соседние пары элементов, а затем сравниваем минимальные элементы пар и так далее.
• Без круглых скобок – это обычный поиск минимума. • А сейчас обратимся к записям в круглых скобках. • Рассмотрим, например, 2(34, 90). • Почему мы не включили 81? Причина в том, что этот элемент не может быть вторым минимальным элементом. Только, 34 и 90 кандидаты на это место.
• Точно так же и 14(45, 31). Элемент 51 исключается из «цепочки» претендентов. • Последнее 7 -е сравнение оставляет в этой «цепочке» 2(14, 34, 90) только три элемента, ибо 45 и 31 не могут претендовать на эту роль, 14 заведомо их меньше, а этот элемент включен в «цепочку» . • Итак, в списке 3 элемента, за 2 сравнения мы находим второй минимальный элемент, общее количество сравнений равно 9.
Задание • Постройте точно такую же схему для массива из 16 элементов. Через 15 сравнений в последней «цепочке» окажется 4 элемента. За 3 сравнения мы найдем второй минимальный элемент. Итого, 18 сравнений.