Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Основной модуль Unit1.cpp (для Формы Form1)






 

Как описывалось в предыдущем разделе, программа повсеместно оперирует со статистикой, используя глобальный массив структур, описанный в п.5.2.1. Поэтому в качестве параметров вызова каждой функции сортировки передаются соответствующие поля этой структуры.

 

В основном модуле предусмотрены глобальные переменные:

  • short arSizes[4] = {5, 7, 9, 25} - массив для определения размерностей массивов. Этот массив нужен для того, чтобы в различных функциях в цикле проходить по всем размерностям.

 

  • const MaxSize = 25 – константа, хранящая максимальную размерность исходных массивов

 

  • short CurSize – переменная для хранения индекса текущей размерности. Сама размерность берется из arSizes. Так как согласно интерфейсу, в один момент времени может быть выбрана только одна размерность (Радио-кнопки – переключатели), то эта переменная нужна для хранения текущей размерности и использования ее в функциях сортировки (по ее значению определяется размерность текущего исх.массива путем обращения к массиву arSizes).

 

  • short arSource[2][4][MaxSize] – исходный массив. Сделан глобальным для обращения к нему из любой части основного модуля. Первая размерность [2] – служит для определения убывающей или случайного порядков заполнения. Вторая размерность [4] – указывает на размер массива (индекс для arSizes). Третья размерность [MaxSize] – сам исходный массив.

 

  • short arRes[2][MaxSize] – массив с результатом сортировки. Сделан глобальным для обращения к нему из любой части основного модуля, исключая его повторное создание. Первая размерность [2] – служит для определения убывающей или случайного порядков заполнения. Вторая размерность [MaxSize] хранит сам отсортированный массив.

 

  • unsigned int SortCount – переменная для хранения кол-ва повторений сортировок (для определения времени выполнения), введенных пользователем. Сделана глобальной для обращения к ней из любой части программы.

 

  • double t_copy – переменная для хранения времени, необходимое для копирования из массива в массив SortCount раз. Используется для более точного замера времени выполнения алгоритмов сортировки (это время вычитается из времени выполнения сортировки, т.к. нам не нужно учитывать время на копирование из массива в массив).

 

Помимо самих функций сортировки и поиска, в соответствии с интерфейсом в программе присутствует множество вспомогательных функций:

· Функции-обработчики событий элементов управления

· Функции подготовки, вывода и очистки результатов сортировки

· Функция проверки прохождения по всем методам сортировки

· Функции очистки и вывода информации о текущей операции

· Функции инициализации прогресс-бара, изменения различных глобальных переменных в зависимости от события, заполнения массивов значениями, инициализации начальных значений массивов и переменных при старте программы и т.д.

· Функция прохождения всех сортировок по всем размерностям в автоматическом режиме, нажатием одной кнопки.

 

Сортировка быстрым методом отличается по своей реализации от других методов за счет рекурсивных вызовов, поэтому она состоит из трех функций – Функция сортировки с подсчетом эффективности, Функция сортировки без подсчета эффективности и Функция, в которой вызываются подряд эти функции. Первая вызывается для определяется эффективности, а вторая вызывается SortCount раз для замера времени выполнения алгоритма.

Остальные сортировки состоят из одной функции, в которой дважды дублируется подряд алгоритм сортировки. В первом дубле подсчитывается эффективность (сравнения и присваивания). Во втором дубле замеряется время выполнения алгоритма, повторяющегося SortCount раз (здесь подсчет эффективности уже не ведется).

 

В остальном, структура программы не требует более подробного описания, т.к. взаимосвязь указанных функций наглядно представлена в листинге программы с подробными комментариями.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал