Лабораторная работа № 2. Изучение и программирование стандартного алгоритма шейкерной сортировки
Скачать 126.61 Kb.
|
МИНОБРНАУКИ РОССИИ Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина) Кафедра Электронных приборов и устройств отчет по лабораторной работе №2 по дисциплине «Информационные технологии» Тема: Изучение и программирование стандартного алгоритма шейкерной сортировки
Санкт-Петербург 2021 Лабораторная работа №2. Задание №1:Изучение и программирование стандартного алгоритма шейкерной сортировки С оставить код в среде MATLAB на основе блок-схемы алгоритма с произвольным набором данных. clear all close all clc n = input('Укажите количество элементов массива: '); A = zeros(1, n); for i = 1 : n A(i) = input('Укажите значение ячеек: '); end disp('Исходный массив:') disp(A) left = 1; right = n; while left < right for j = left: (right - 1) if (A(j) > A(j + 1)) tmp = A(j); A(j) = A(j + 1); A(j + 1) = tmp; end end right = right - 1; for j = right: -1: (left + 1) if (A(j) < A(j - 1)) tmp = A(j); A(j) = A(j - 1); A(j - 1) = tmp; end disp('Сортировка'); disp(A) end left = left + 1; end fprintf('\nОтсортированный массив A:\n'); disp('Преобразованный массив:') disp(A) for i = 1: n fprintf('[%d] ', A(i)); end fprintf('\n\n'); Блок-схема для выполнения алгоритма «шейкерная сортировка» Задание №2 Изучение и программирование алгоритма «Сортировка расческой» Изучение и программирование алгоритма сортировки алгоритма «Сортировка расческой» Блок-схема для выполнения алгоритма «Сортировка расческой» n = input('Укажите количество элементов массива: '); A = zeros(1, n); for i = 1: n fprintf('Введите значение A[%d] элемента масива', i); A(i) = input(': '); end fact = 1.2473309; step = n - 1; while step > 1 i = 1; while i + step <= n if (A(i) > A(i + step)) tmp = A(i); A(i) = A(i + step); A(i + step) = tmp; end i = i + 1; end step = fix(step / fact); end i = 1; swapped = 1; while swapped && i < n swapped = 0; for j = 1: n - 1 if (A(j) > A(j + 1)) tmp = A(j); A(j) = A(j + 1); A(j + 1) = tmp; swapped = 1; end disp('Сортировка'); disp(A) end i = i + 1; end fprintf('\nОтсортированный массив A:\n'); for i = 1: n fprintf('[%d] ', A(i)); end fprintf('\n\n'); |