Лабораторные работы по ИТ за 2 семестр (ФЭЛ) / 9283_Зикратова_ИТ_ЛР№4
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В. И. Ульянова (Ленина)
Кафедра РТЭ
отчёт
по лабораторной работе №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-го задания.