Скачать презентацию Информатика ФГОСС Последовательный поиск в массиве Информатика 9 Скачать презентацию Информатика ФГОСС Последовательный поиск в массиве Информатика 9

2cabefabef63e248c03f807f036f6c56.ppt

  • Количество слайдов: 32

Информатика ФГОСС Последовательный поиск в массиве Информатика 9 класс Токар И. Н. Информатика ФГОСС Последовательный поиск в массиве Информатика 9 класс Токар И. Н.

Информатика ФГОСС Последовательный поиск в массиве • Самый простой способ поиска элементов массива с Информатика ФГОСС Последовательный поиск в массиве • Самый простой способ поиска элементов массива с заданными свойствами – это последовательный просмотр всех элементов и проверка выполнения условий поиска. • Такой алгоритм поиска называется линейным или последовательным.

Информатика ФГОСС Последовательный поиск в массиве Последовательный массив. Поиск в последовательном массиве. Поиск – Информатика ФГОСС Последовательный поиск в массиве Последовательный массив. Поиск в последовательном массиве. Поиск – процедура выделения из некоторого множества записей определенного подмножества, записи которого удовлетворяют некоторому заранее поставленному условию. Условие поиска часто называют запросом на поиск. Простейшее условие поиска – поиск по совпадению, т. е. равенство значения ключевого атрибута i-й записи р(i) и некоторого заранее заданного значения q. алгоритмы всех разновидностей поиска можно получить из алгоритмов поиска по совпадению.

Информатика ФГОСС Последовательный поиск в массиве Базовым методом доступа к массиву является ступенчатый поиск Информатика ФГОСС Последовательный поиск в массиве Базовым методом доступа к массиву является ступенчатый поиск – предполагает упорядоченность обрабатываемых записей, причем безразлично по возрастанию и по убыванию. Для определенности будем считать, что массив отсортирован по возрастанию. Простейшим вариантом ступенчатого поиска является последовательный поиск. Искомое значение q сравнивается с ключом первой записи, если значения не совпадают – с ключом второй записи и т. д. до тех пор, пока q не станет больше ключа очередной записи. Поиск с одинаковой вероятностью 1/М может окончиться на любой записи, поэтому С=(1/М)Σi=(M+1)/2 или С пропорционально М.

Информатика ФГОСС Последовательный поиск в массиве Рассмотрим двухступенчатый поиск в массиве, состоящем из записей. Информатика ФГОСС Последовательный поиск в массиве Рассмотрим двухступенчатый поиск в массиве, состоящем из записей. Для заданного М выбирается константа dl, называемая шагом поиска. Если необходимо отыскать запись со значением ключевого атрибута = q, производятся следующие действия. Значение qпоследовательно связывается с рядом величин р(1), р(1+dl), р(1+2 dl), …, р(1+kdl) до тех пор, пока впервые будет достигнуто неравенство.

Информатика ФГОСС Последовательный поиск в массиве P (1+m*dl)>=q – здесь заканчивается первая ступень поиска. Информатика ФГОСС Последовательный поиск в массиве P (1+m*dl)>=q – здесь заканчивается первая ступень поиска. На второй ступени q последовательно сравнивается со всеми ключами, которые имеют номер 1+m*dl и больше до тех пор, пока в процессе сравнений будет достигнут ключ >, больше, чем q. извлеченные при этом записи с ключом q образуют результат поиска. Эффективность поиска измеряется количеством произведенных сравнений. Для двухступенчатого поиска среднее число сравнений примерно составляет С=М/(2*dl)+dl/2 Параметр dl – выбираемый, и естественно выбрать его так, чтобы минимизировалось С. dl – непрерывная переменная – производная = С'=-М/(2 dl^2)+(1/2)

Информатика ФГОСС Последовательный поиск в массиве Из условия С'=0 получаем dl= корень из М. Информатика ФГОСС Последовательный поиск в массиве Из условия С'=0 получаем dl= корень из М. Вторая производная С' ' в точке х = dl положительна, =>достигнуто минимальное значение С. При n-ступенчатом поиске заранее выбираются константы n и S. На 1 этапе ключевые атрибуты для сравнения с искомым ключом q выбираются из массива по закону арифметической прогрессии, начиная с р(1) и шагом dl=М/S (окружение в меньшую сторону). Когда впервые будет достигнут ключ р(k)>q, выбирается шаг d 2=dl/S и организуется сравнение с этим шагом, начиная с р(k-dl). Описанные действия повторяются n раз, причем шаг на последней ступени поиска dn=1. Минимальное число сравнений достигается при S=M^(1/n). И кроме того существует оптимальное n=ln M.

Информатика ФГОСС Последовательный поиск в массиве Ступенчатый поиск имеет важный частный вариант – бинарный Информатика ФГОСС Последовательный поиск в массиве Ступенчатый поиск имеет важный частный вариант – бинарный поиск, когда S=2. Для бинарного поиска вводится левая граница интервала поиска А и правая граница В. Первоначально интервал охватывает весь массив, т. е. А=0, В=М+1. Вычисляется середина интервала i по формуле i=(А+В)/2 с окружением в меньшую сторону. Ключ i-й записи р(i) сравнивается с искомым значением q. Если р(i)=q, то поиск заканчивается. В случае р(i)>q записи с номерами i+1, i+2, …M заведомо не содержат ключа q, и надо сократить интервал поиска, приняв В=i. Аналогично при p(i)

Информатика ФГОСС Последовательный поиск в массиве Максимальное число сравнений Сm при поиске данных бинарным Информатика ФГОСС Последовательный поиск в массиве Максимальное число сравнений Сm при поиске данных бинарным методом. Сокращение интервала поиска на каждом шаге в худшем случае приведет к интервалу нулевой длины, что соответствует отсутствию в массиве искомого значения ключевого атрибута. После сравнения интервал поиска составит М/2 записей, после второго – М/4 и т. д. Когда интервал поиска впервые станет меньше одного, применяемая схема окружения результата деления даст нулевой интервал и поиск закончится. Это соответствует неравенству М/2(2^Cm)<=2 => Cm пропорционально log M. Среднее число сравнений при бинарном поиске составляет C=log(M)-1.

Информатика ФГОСС Последовательный поиск в массиве Во всех 3 -х случаях время поиска является Информатика ФГОСС Последовательный поиск в массиве Во всех 3 -х случаях время поиска является функцией от числа записей М, конкретные выражения составляют: -для последовательного поиска (T 1~M или T 1=k 1*M); -для двухступенчатого поиска (T 2~~корень из M или T 2=k 2*корень из M); -для бинарного поиска (T 3~log M или T 3=k 3* log M); Корректировка последовательного массива. Включение новой записи (н-р, со значением ключевого атрибута w) в последовательный упорядоченный массив не должно нарушать его упорядоченность. Поэтому сначала необходимо найти положение новой записи относительно имеющихся в массиве записей. Новая запись не может сразу занять место, где остановился поиск, необходимо выполнить пересылку записей, чтобы освободить его.

Информатика ФГОСС Последовательный поиск в массиве Поэтому время включения и использования записей из упорядоченного Информатика ФГОСС Последовательный поиск в массиве Поэтому время включения и использования записей из упорядоченного массива будет складываться т. о. : Tk=log M+M*L L –длина 1 -й записи массива. В формуле для Tk второе слагаемое по величине всегда значительно превышает первое, поэтому можно считать Tk~ML

Информатика ФГОСС Последовательный поиск в массиве Поиск минимального (максимального) элемента • Минимальный элемент массива Информатика ФГОСС Последовательный поиск в массиве Поиск минимального (максимального) элемента • Минимальный элемент массива – элемент имеющий наименьшее значение среди всех элементов, а максимальный – наибольшее • Для нахождение значения минимального (максимального) элемента массива нужно просмотреть все элементы массива и на каждом шаге сравнивать значение текущего элемента с уже найденным на предыдущих шагах значением минимума.

Информатика ФГОСС Последовательный поиск в массиве Поиск минимального (максимального) элемента • • Поиск максимального Информатика ФГОСС Последовательный поиск в массиве Поиск минимального (максимального) элемента • • Поиск максимального среди n элементов массива. max: =A[1]; for i: =2 to N do if A[i]>max then max: =A[i]; После завершения работы в переменной max будет храниться значение максимального элемента массива. • Поиск минимального среди n элементов массива. min: =A[1]; for i: =2 to N do if A[i]

Информатика ФГОСС Последовательный поиск в массиве Линейный поиск элемента с заданными свойствами • В Информатика ФГОСС Последовательный поиск в массиве Линейный поиск элемента с заданными свойствами • В заданном линейном массиве определить есть ли хотя бы один элемент который является нечетным, не кратным 7 числом, если “да”, то напечатать его номер.

Информатика ФГОСС Последовательный поиск в массиве Определение исходных данных и результатов Исходные данные: • Информатика ФГОСС Последовательный поиск в массиве Определение исходных данных и результатов Исходные данные: • – – Переменная n - количество элементов в массиве, Переменная a – линейный массив. Результат: • – – Переменная k – номер позиции, на которой находится элемент Вывод «нет» , если элемент не найден.

Информатика ФГОСС Последовательный поиск в массиве Алгоритм решения задачи Ввод исходных данных. Для решения Информатика ФГОСС Последовательный поиск в массиве Алгоритм решения задачи Ввод исходных данных. Для решения задачи воспользуемся алгоритмом поиска с барьером. • • – – – • Занесем элемент, удовлетворяющий условию задачи (например, число 5) на последнее место в массив, а затем будем просматривать элементы с начала. Как только элемент найден, остановимся. Если элемент найден на месте n+1, значит в исходном массиве нет элемента, удовлетворяющего условию задачи, иначе печатаем номер найденного элемента. Вывод результата.

Информатика ФГОСС Последовательный поиск в массиве Описание переменных • • Переменные n и k Информатика ФГОСС Последовательный поиск в массиве Описание переменных • • Переменные n и k имеют тип integer Переменная а имеет тип array Элементы массива имеют тип integer. Для работы также необходима переменная i типа integer – счетчик цикла.

Информатика ФГОСС Последовательный поиск в массиве Программа: Var i, k, n: integer; a: array Информатика ФГОСС Последовательный поиск в массиве Программа: Var i, k, n: integer; a: array [1. . 20] of integer; Begin Writeln('введите количество элементов в массиве'); Readln(n); Writeln('введите элементы'); For i: =1 to n do Read(a[i]); a[n+1]: =5; k: =1; while (a[k] mod 2=0) or (a[k] mod 7=0) do k: =k+1; if k=n+1 then writeln('в массиве нет таких элементов') else writeln('элемент ', a[k], ' стоит на месте ', k); End.

Информатика ФГОСС Последовательный поиск в массиве Тестирование • Запустите программу и введите значение n=5 Информатика ФГОСС Последовательный поиск в массиве Тестирование • Запустите программу и введите значение n=5 2 7 21 3 4 • Проверьте, результат должен быть следующим: элемент 3 стоит на месте 4

Информатика ФГОСС Последовательный поиск в массиве Подсчет количества элементов с заданными свойствами • В Информатика ФГОСС Последовательный поиск в массиве Подсчет количества элементов с заданными свойствами • В заданном линейном массиве посчитать количество элементов, равных заданному числу x.

Информатика ФГОСС Последовательный поиск в массиве Определение исходных данных и результатов Исходные данные: • Информатика ФГОСС Последовательный поиск в массиве Определение исходных данных и результатов Исходные данные: • – – – Переменная n - количество элементов в массиве, Переменная a – линейный массив. Переменная х – искомое число Результат: • – – Переменная k количество элементов; Если k=0, то таких элементов в массиве нет.

Информатика ФГОСС Последовательный поиск в массиве Алгоритм решения задачи. • Ввод исходных данных. • Информатика ФГОСС Последовательный поиск в массиве Алгоритм решения задачи. • Ввод исходных данных. • Для решения задачи воспользуемся алгоритмом линейного поиска. – До просмотра элементов массива k=0. – Будем просматривать элементы с начала. – Как только элемент найден, увеличим значение k. • Проверка значения k. • Вывод результата.

Информатика ФГОСС Последовательный поиск в массиве Описание переменных • Массив целых чисел (а), • Информатика ФГОСС Последовательный поиск в массиве Описание переменных • Массив целых чисел (а), • переменные типа integer – количество элементов (n), – искомое число (x), – количество найденных (k), – текущий элемент (i);

Информатика ФГОСС Последовательный поиск в массиве Программа Var i, k, n, x: integer; a: Информатика ФГОСС Последовательный поиск в массиве Программа Var i, k, n, x: integer; a: array [1. . 20] of integer; Begin Writeln('введите количество элементов в массиве'); Readln(n); Writeln('введите элементы'); For i: =1 to n do Read(a[i]); Writeln('введите число х'); Readln(x); k: =0; for i: =1 to n do if a[i]=x then k: =k+1; if k=0 then writeln('в массиве нет таких элементов') else writeln('в массиве ', k, ' элементов =', x); End.

Информатика ФГОСС Последовательный поиск в массиве Тестирование Запустите программу и введите значение n=5 введите Информатика ФГОСС Последовательный поиск в массиве Тестирование Запустите программу и введите значение n=5 введите элементы 2 2 3 2 4 введите число х 2 Проверьте, результат должен быть следующим: в массиве 3 элементов =2

Информатика ФГОСС Последовательный поиск в массиве Нахождение максимального (минимального) элемента массива • В заданном Информатика ФГОСС Последовательный поиск в массиве Нахождение максимального (минимального) элемента массива • В заданном линейном массиве определить, какой из элементов минимальный или максимальный встречается раньше.

Информатика ФГОСС Последовательный поиск в массиве Определение исходных данных и результатов Исходные данные: • Информатика ФГОСС Последовательный поиск в массиве Определение исходных данных и результатов Исходные данные: • – – Переменная n - количество элементов в массиве, Переменная a – линейный массив. Результат: • – Текстовый ответ – минимальный встречается раньше или максимальный встречается раньше.

Информатика ФГОСС Последовательный поиск в массиве Алгоритм решения задачи. Ввод исходных данных. Для решения Информатика ФГОСС Последовательный поиск в массиве Алгоритм решения задачи. Ввод исходных данных. Для решения задачи воспользуемся • • – – – • Найдем минимальный элемент массива (min) и его номер (nmin) Найдем максимальный элемент массива (max) и его номер (nmax) Сравним значения номера максимального и номера минимального элементов Вывод результата.

Информатика ФГОСС Последовательный поиск в массиве Описание переменных • • • Переменная n имеет Информатика ФГОСС Последовательный поиск в массиве Описание переменных • • • Переменная n имеет тип integer Переменная а имеет тип array Элементы массива имеют тип integer. Переменные min, max, nmin, nmax имеют тип integer. Для работы также необходима переменная i типа integer – счетчик цикла.

Информатика ФГОСС Последовательный поиск в массиве Программа Var i, k, n, nmin, nmax, min, Информатика ФГОСС Последовательный поиск в массиве Программа Var i, k, n, nmin, nmax, min, max, r: integer; a: array [1. . 20] of integer; Begin Writeln('введите количество элементов в массиве' ); Readln(n); Writeln('введите элементы'); For i: =1 to n do Read(a[i]); {поиск минимального элемента} min: =a[1]; nmin: =1; for i: =2 to n do if a[i]max then begin max: =a[i]; nmax: =i; end; if nmin

Информатика ФГОСС Последовательный поиск в массиве Тестирование • Запустите программу и введите значение n=5 Информатика ФГОСС Последовательный поиск в массиве Тестирование • Запустите программу и введите значение n=5 введите элементы 2 5 1 3 4 • Проверьте, результат должен быть следующим: максимальный встретился раньше

Информатика ФГОСС Последовательный поиск в массиве Информатика ФГОСС Последовательный поиск в массиве