Лабораторная работа Алгоритмы и программы решения задач комбинаторики. лаба1. Алгоритмы и программы решения задач комбинаторики
Скачать 84.64 Kb.
|
МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» им. В.И. УЛЬЯНОВА(ЛЕНИНА) Кафедра радиотехнической электроники ОТЧЕТ по лабораторной работе №1 по дисциплине «информационные технологии» Тема: Алгоритмы и программы решения задач комбинаторики Студентка гр. 9205 ______________________ Нимкаева Е.Д. Преподаватель ______________________ Староверов Е.Н. Санкт-Петербург 2020 1.1 Алгоритм «Сортировка вставкой» Цель: изучение и программирование алгоритма сортировки Постановка задачи Задан алгоритм сортировки вставкой и вектор исходных данных S(n) Реализовать в Matlab алгоритм сортировки (по возрастанию) для n вектора исходных данных Получить в Excel текстовые результаты сортировки Провести сортировку вектора исходных данных Определить число перестановок элементов вектора (М) Сравнить полученные результаты с тестовыми Оформить отчет Практическое занятие: разработка алгоритма и программы сортировки двумерного массива по отдельным строкам/столбцам по возрастанию/убыванию. A[j]<=A[j+1] М=0, Р=0 Конец Р=0, Р=А[j], A[j]=A[j+1], A[j+1]=P, M=M+1 J=I,0,-1 i=0,4,1 Ввод n, A[n] Начало да нет Вывод М, А[n] clear all; M=0; P=0; n=input('Введите размер массива='); if n<=0 disp('Массив не может содержать отрицательное или нулевое кол-во элементов)') else for i=1:n A(i)=input('Введите элемент'); end disp(A) for i=2:1:n for j=(i-1):-1:1 if A(j)<=A(j+1) P=A(j); A(j)=A(j+1); A(j+1)=P; M=M+1; end end end disp(A) disp(M) end После отчистки значений предыдущего массива (1) задаётся количество элементов (2). Далее, кол-во элементов проверяется на натуральность (3) и, если кол-во элементов не является натуральным числом, то программа выводит на экран ошибку (5) и останавливается. Если кол-во элементов является натуральным числом, то циклическим оператором присваивается значение каждому элементу (9-11). Полученный массив выводится в неотсортированном виде (12). Далее, циклический оператор, перебирая порядковые номера элементов с конца (13-14), сравнивает их и в случае нарушения свойства возрастания (15) меняет значение элементов выбранной пары (16-18) и засчитывает это как перестановку (19). Последней операцией является вывод отсортированного массива (22) и количе ство перестановок (23). clear all; M=0; n=input('Введите размер массива'); for i=1:n A(i)=input('Введите элемент'); end for j=2:n k=j; m=j-1; c=0; while m>0 if A(k)>A(m) c=A(k); A(k)=A(m); A(m)=c; c=c+1; end k=k-1; m=m-1; end if c==0 j=n+1; end end disp ('полученный массив') disp(A); |