Скачиваний:
9
Добавлен:
27.01.2021
Размер:
17.08 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В. И. Ульянова (Ленина)

Кафедра РТЭ

отчёт

по лабораторной работе №4

по дисциплине «Информационные технологии»

Тема: Алгоритм поиска

Студентка гр. 9283

Зикратова А.А.

Преподаватель

Кочунов К. В.

Санкт-Петербург

2020

Цель работы.

Ознакомление с алгоритмом поиска и его реализация.

часть:

Создать массив из 20 случайно заданных элементов в диапазоне значений 0-20. Пользователь вводит любое значение в данном диапазоне с клавиатуры, и программа ищет такое значение в исходном массиве. Результат программы – вывод количества искомых элементов в исходном массиве и индексов, на которых они расположены.

Текст программы:

S=fix(20*rand ([1 20])); % массив

n=20; % кол-во элементов в массиве

disp(S)

m=input('Введите число от 0 до 20: ');

h=0; % кол-во повторений введённого элемента массива

for i=1:n

if S(i)==m % если значение ячейки массива соответствует введённому значению

disp('Индекс элемента: ')

disp(i)

h=h+1; % считается кол-во повторений значения введённого элемента в массиве

end

end

disp('Кол-во элементов: ') % кол-во повторяющихся элементов

disp(h)

Результаты работы программы:

Columns 1 through 19

15 7 4 8 1 2 18 19 11 1 4 7 16 0 0 3 12 14 12

Column 20

9

Введите число от 0 до 20: 16

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

13

Кол-во элементов:

1

задание:

Реализация алгоритма бинарного поиска.

Данное задание без блок-схемы. Суть: есть массив случайных чисел. Далее с

помощью любого из реализованных ранее алгоритмов сортировки

произведите сортировку массива по возрастанию (здесь использована сортировка вставками). Следующий шаг – бинарный поиск введенного с клавиатуры элемента. Результат программы: количество искомых элементов и индексы их расположения. Следует учесть варианты, когда искомого элемента в массиве нет или их больше 1.

Текст программы:

S=fix(20*rand ([1 20])); % массив

n=20; % кол-во элементов в массиве

for i=1:(n-1) % переменная изменяется от ... до ...

j=i; % вводится новая переменная, т. к. "i" не может изменяться внутри цикла

while j>0 && S(j+1)<S(j) % пока ... и ... выполняется

P=S(j);

S(j)=S(j+1); % 2 элемента меняются местами в ячейках массива

S(j+1)=P;

j=j-1;

end

end

disp(S)

m=input('Введите число от 0 до 20: ');

h=0; % кол-во повторений введённого элемента массива

for i=1:n

if S(i)==m % если значение ячейки массива соответствует введённому значению

disp('Индекс элемента: ')

disp(i)

h=h+1; % считается кол-во повторений значения введённого элемента в массиве

end

end

disp('Кол-во элементов: ') % кол-во повторяющихся элементов

disp(h)

Результаты работы программы:

Columns 1 through 19

1 3 3 5 6 7 8 8 9 10 10 10 12 13 14 15 15 15 16

Column 20

18

Введите число от 0 до 20: 10

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

10

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

11

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

12

Кол-во элементов:

3

Вывод: в ходе лабораторной работы был реализован алгоритм поиска, а также был использован (мы повторили) алгоритм сортировки вставками при выполнении 2-го задания.