
IT ФЭЛ, кафедра МНЭ, 2 сем, Matlab / ЛР5 / Lab5
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра микро- и наноэлектроники
отчет
по лабораторной работе
по дисциплине «Информационные технологии»
Тема: «Алгоритм поиска медианы и генерирования перестановок»
Студент гр. 1282 |
|
БОГДАН |
Преподаватель |
|
Фирсов Д. Д. |
Санкт-Петербург
2022
Задание 1.
Задача:
Ввести с клавиатуры элементы массива размерности N (размерность так же задается пользователем вручную). Основываясь на алгоритме, представленном в блок-схеме на рисунке 1, составить код программы, реализующий алгоритм поиска медианы в заданном массиве. В результате работы алгоритма должен происходить вывод значения найденной медианы (медиана – значение центрального элемента массива для массивов нечетной размерности, для четной размерности – сумма двух центральных элементов деленная на 2).
Ход работы:
n=input('Введите количество элементов массива ');
A=input('Введите элемент массива ');
if mod(n,2)~=0
for i=1:n
na=0;
ma=0;
for j=1:n
if A(j)~=A(i)
if A(j)>A(i)
na=na+1;
else
ma=ma+1;
end
end
end
if na==ma
disp(A(i))
end
end
end
if mod(n,2)==0
for i=1:(n-1)
for j=(i+1):n
q=i;
while A(j)<A(q)
q=j;
P=A(i);
A(i)=A(q);
A(q)=P;
end
end
end
disp((A(n/2)+A(n/2+1))/2)
end
Листинг программы:
Для нечетного кол-ва элементов:
введите количество элементов массива 5
введите элементы массива [34 32 100 67 45]
100
Для четного кол-ва элементов:
введите количество элементов массива 6
введите элемент массива [23 45 66 88 95 1]
77
Задание 2
Задача:
Ввести с клавиатуры размерность массива N. Автоматически заполнить массив значениями от 1 до N с шагом 1. Применяя рекурсивный алгоритм генерации перестановок получить и вывести на экран все возможные комбинации значений массива.
Ход работы:
n = input ('Введите количество элементов массива ');
disp (n);
global A
for k=1:n
A(k)=round(n*rand);
end
disp (A);
Generate(1, n);
function Generate(k, n)
global A
if k == n
for i = 1:n
fprintf('%i', A(i));
end
fprintf('\n')
else
for j = k:n
Swap(k, j);
Generate(k+1, n);
Swap(k, j);
end
end
end
function Swap(k, j)
global A
t = A(k);
A(k) = A(j);
A(j) = t;
end
Листинг программы:
введите количество элементов массива 3
3
1 2 3
123
132
213
231
321
312
Вывод: В ходе выполнения лабораторной работы был реализован алгоритм поиска медианы и генерирования перестановок, а также рекурсивный алгоритм генерации перестановок. Результатом первого задания алгоритма стал вывод значения найденной медианы, а второй вывод на экран всех возможных комбинаций значений массива.