Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Поиск информации

Содержание

Алгоритмы поиска информацииЛинейный поиск
Поиск информацииЗадача поиска:где в заданной совокупности данных находится элемент, обладающий заданным свойством?Большинство Алгоритмы поиска информацииЛинейный поиск Пример:Написать программу поиска элемента х в массиве из n элементов. Значение элемента В данном случае известно только значение разыскиваемого элемента, никакой дополнительной информации о Недостатки данного метода: если значение х встречается в массиве несколько раз, то Используем цикл с предусловием.While (i Задание оформить программу и проследить ее работу в режиме пошагового просмотра при Линейный поиск с использованием барьераНедостатком нашей программы является то, что в заголовке В массиве на n + 1 место запишем искомый элемент х, который Задание Изменить программу так, чтобы был найден элемент с максимально возможным индексом. Если никаких дополнительных сведений о массиве, в котором хранится массив нет, то Бинарный поискИначе двоичный поиск или    метод половинного деления. ЗадачаДано целое число х и массив а[1..n], отсортированный в порядке неубывания чисел, Идея бинарного метода- проверить, является ли х средним элементом массива. Если да, Пример: Массив а: 3 5 6 8 12 15 17 18 20 Шаг 2. Рассмотрим лишь первые 4 элемента массива. Индекс среднего элемента: В общем случае формула поиска значения среднего элемента m:Где L – индекс Фрагмент программной реализации бинарного поиска:Begin  L:= 1; R:= n; Бинарный поиск с использованием фиктивного «барьерного» элемента. Задание:Использование идеи двоичного поиска позволяет значительно улучшить алгоритм сортировки массива методом простого
Слайды презентации

Слайд 2 Алгоритмы поиска информации
Линейный поиск

Алгоритмы поиска информацииЛинейный поиск

Слайд 3 Пример:
Написать программу поиска элемента х в массиве из

Пример:Написать программу поиска элемента х в массиве из n элементов. Значение

n элементов. Значение элемента х вводится с клавиатуры.
Решение:
Дано:
Const

n= 10;
Var a: Array[1..n] of integer;
x: integer;


Слайд 4 В данном случае известно только значение разыскиваемого элемента,

В данном случае известно только значение разыскиваемого элемента, никакой дополнительной информации

никакой дополнительной информации о нем или о массиве, в

котором его надо искать, нет. Поэтому для решения задачи разумно применить последовательный просмотр массива и сравнение значения очередного рассматриваемого элемента с данным. Если значение очередного элемента совпадает с х, то запомним его номер в переменной k.

For i:=1 to n do
if a[i] = x then k:=i;


Слайд 5 Недостатки данного метода:
если значение х встречается в

Недостатки данного метода: если значение х встречается в массиве несколько раз,

массиве несколько раз, то найдено будет последнее из них;

после того, как нужное значение уже найдено, массив просматривается до конца, т.е. всегда выполняется n сравнений.

Прервем просмотр сразу же после обнаружения заданного элемента!


Слайд 6 Используем цикл с предусловием.
While (i

Используем цикл с предусловием.While (i

x) do inc(i);
В результате:
либо будет найден искомый элемент,

т.е. найдется такой индекс i, что a[i] = x;
либо будет просмотрен весь массив, и искомый элемент не обнаружится.
Поскольку поиск заканчивается только в случае, когда i = n + 1 или когда искомый элемент найден, то из этого следует, что если в массиве есть несколько элементов, совпадающих с элементом х, то в результате работы программы будет найден первый из них, т.е. элемент с наименьшим индексом.

Слайд 7 Задание
оформить программу и проследить ее работу

Задание оформить программу и проследить ее работу в режиме пошагового просмотра

в режиме пошагового просмотра при различных значениях х;

модифицировать

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

Слайд 8 Линейный поиск с использованием барьера
Недостатком нашей программы является

Линейный поиск с использованием барьераНедостатком нашей программы является то, что в

то, что в заголовке цикла записано достаточно сложное условие,

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

Для этого используем искусственный прием!

Слайд 9 В массиве на n + 1 место запишем

В массиве на n + 1 место запишем искомый элемент х,

искомый элемент х, который будет являться барьерным. Тогда если

в процессе работы программы
a[n + 1] := x; i := 1;
While a[i] <> x do inc(i);
обнаружится такой индекс i, что a[i] = x, то элемент будет найден. Но если a[i] = x будет только при i = n + 1, то, значит, интересующего нас элемента в массиве нет.
В случае наличия в массиве нескольких элементов, удовлетворяющих заданному свойству, будет также найден элемент с наименьшим номером.

Слайд 10 Задание
Изменить программу так, чтобы был найден элемент

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

с максимально возможным индексом.




Слайд 11 Если никаких дополнительных сведений о массиве, в котором

Если никаких дополнительных сведений о массиве, в котором хранится массив нет,

хранится массив нет, то ускорить поиск нельзя.
Если же известна

некоторая информация о данных, среди которых ведется поиск, например, массив данных отсортирован, удается существенно сократить время поиска, применяя непоследовательные методы поиска.

Слайд 12 Бинарный поиск
Иначе двоичный поиск или

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

метод половинного деления.

При его использовании на каждом шаге область поиска сокращается вдвое.

Слайд 13 Задача
Дано целое число х и массив а[1..n], отсортированный

ЗадачаДано целое число х и массив а[1..n], отсортированный в порядке неубывания

в порядке неубывания чисел, то есть для любого k:

1 ≤ k < n: a[k-1] ≤ a[k].
Найти такое i, что a[i] = x или сообщить, что элемента х в массиве нет.

Слайд 14 Идея бинарного метода
- проверить, является ли х средним

Идея бинарного метода- проверить, является ли х средним элементом массива. Если

элементом массива. Если да, то ответ получен. Если нет,

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

Слайд 15 Пример:
Массив а:
3 5 6 8 12

Пример: Массив а: 3 5 6 8 12 15 17 18

15 17 18 20 25
х = 6
Шаг 1.
Найдем номер

среднего элемента:


Так как 6 < a[5]

3 5 6 8 12 15 17 18 20 25


Слайд 16 Шаг 2. Рассмотрим лишь первые 4 элемента массива.

Шаг 2. Рассмотрим лишь первые 4 элемента массива. Индекс среднего элемента:

Индекс среднего элемента:

Аналогично:

Шаг 3. Рассматриваем два элемента

A[3] = 6! Его номер – 3


Слайд 17 В общем случае формула поиска значения среднего элемента

В общем случае формула поиска значения среднего элемента m:Где L –

m:
Где L – индекс первого, а R – индекс

последнего элемента рассматриваемой части массива.

Слайд 18 Фрагмент программной реализации бинарного поиска:
Begin
L:= 1;

Фрагмент программной реализации бинарного поиска:Begin L:= 1; R:= n;  {на

R:= n; {на первом шаге – весь

массив}
f:= false; {признак того, что х не найден}
while ( L<=R) and not f do
begin
m:= (L + R) div 2;
if a[m] = x then f:= true { элемент найден.
Поиск надо прекратить}
else if a[m] < x then L:= m + 1 {отбрасывается левая
часть}
else R:= m – 1 {отбрасывается правая часть}
end
End;

Слайд 19 Бинарный поиск с использованием фиктивного «барьерного» элемента.

Бинарный поиск с использованием фиктивного «барьерного» элемента.


Begin
a[0]:=x;
L:= 1; R:= n;
Repeat
m:= (L + R) div 2;
if L > R then m:=0
else if a[m] < x then L:= m + 1
else R:= m - 1
until a[m]= x;
ans:= m;
End;

(Списать в тетрадь. Добавить комментарий)


  • Имя файла: poisk-informatsii.pptx
  • Количество просмотров: 137
  • Количество скачиваний: 0