Главная страница

Сазонова_20ВИ1. Сравнение и анализ алгоритмов сортировки массива прямым выбором


Скачать 0.88 Mb.
НазваниеСравнение и анализ алгоритмов сортировки массива прямым выбором
Дата10.12.2021
Размер0.88 Mb.
Формат файлаdoc
Имя файлаСазонова_20ВИ1.doc
ТипПояснительная записка
#298849
страница4 из 7
1   2   3   4   5   6   7

Проектирование программы

  1. Модель интерфейса


Форма в приложении «Delphi Embarcadero» - это окно, в котором работает пользователь. Программа может иметь несколько форм. По умолчанию все формы создаются автоматически при запуске приложения, и первая из них считается главной. Так, в процессе создания программы была разработана форма, изображенная на рисунке 3.



Рисунок 3 – Форма с открытой страницей «Выбор и ввод данных»

Форма состоит из следующих компонентов:

    1. 1 – Edit1. Этот компонент предназначен для введения данных пользователем. Введенное число будет обозначать размерность массива.

    2. 2 - RadioButton1, 3 – RadioButton2, 4 – RadioButton3. Эти элементы интерфейса позволят пользователю выбрать определенный массив, который впоследствии будет отсортирован с помощью алгоритма классического прямого выбора и прямого выбора с одновременным поиском минимума и максимума.

    3. 5 - Button1. Кнопка «Сравнить алгоритмы» выведет в виде таблицы данные, позволяющие сравнить алгоритмы сортировок прямого выбора для указанной в предыдущем компоненте степени упорядоченности.

    4. 6 – Button2. Данная кнопка реализует построение диаграммы по полученным данным.

    5. 7 – Button3, кнопка закрытия программы.

    6. 8 - PageControl1. Данный компонент позволяет разместить данные в разных страницах. Каждая имеет свое название, отражающее ее содержимое: «Выбор и ввод данных» - указываем размерность массива, степень его упорядоченности, выбираем нужные действия; «Таблица» - страница с построенной таблицей; «График» - страница с построенным графиком.

Созданная форма имеет несколько страниц. Первая была представлена и описана выше, вторая отображена на рисунке 4:



Рисунок 4 – Форма с открытой страницей «Таблица»

Третья страница формы изображена на рисунке 5.



Рисунок 5 – Форма с открытой страницей «График»

    1. 10 – Chart. Является компонентом, с помощью которого будет построен и отображен график зависимости времени сортировок прямым выбором от размерности неупорядоченного, упорядоченного и упорядоченного в обратном порядке массивов.

    2. 11 – TabSheet1, TabSheet2, TabSheet3. Данные компоненты считаются полями, на которых расположены все компоненты. Каждое поле находится на соответствующей странице.

    3. 12 - Label1, Label2, Label3, Label4, Label5. Этот компонент предназначен для отображения статического текста, то есть надписей и меток на Форме, которые не меняются в течение всего времени работы программы.
    1. Проектирование структур данных


Для решения поставленной задачи курсовой работы используется следующая структура данных:

Объявление переменных в программе:

var

Form1: TForm1;

M: array[0..n] of longint;

M2: array [0..n] of longint;

Массивы объявляются как глобальные. Для большего удобства создается два массива. Второй массив будет равен первому, то есть будет дублировать все элементы массива М. Это необходимо для того, чтобы сортировки применялись к одинаковому массиву.

Значение n является константой. Изначально ему присваивается определенное значение, обозначающее максимально возможную размерность массива:

const n=1000000;

Во время выполнения программы пользователь вводит в Edit1 значение, которое будет означать размерность массива. Введенное число присвоиться локальной переменной razm типа longint в следующей строчке:

razm:=strtoint(Edit1.Text);

Выше описанная строчка необходима для того, чтобы массивы M и M2 заполнились выбранном пользователем количеством элементов.

В программе используется три вида массива. Каждый имеет свой способ заполнения.

  • Неупорядоченный массив:

randomize;

for i:=0 to razm do

begin

M[i]:=random(1000000);

M2[i]:=M[i];

end;

Первая последовательность элементов заполняется произвольно в диапазоне от 0 до 999999. Вторая же, то есть M2, дублирует каждый элемент массива М.

  • Упорядоченный массив:

M[0]:=random(3);

for i:=1 to razm do begin

M[i]:=M[i-1]+random(5)+1;

M2[i]:=M[i];

end;

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

  • Упорядоченный в обратном порядке массив:

M[0]:=999999;

for i:=1 to n do begin

M[i]:=M[i-1]-random(10)-1;

M2[i]:=M[i];

end;

Этот тип последовательности заполняется по принципу упорядоченного массива. Однако первый элемент приобретает максимальное значение. Последующие элементы также будут отличаться минимум на единицу от предыдущего, но уже в меньшею сторону. Второй массив просто дублирует каждый элемент первого.
    1. 1   2   3   4   5   6   7


написать администратору сайта