2. Постановка задачи
В данной работе необходимо разработать программу, реализующую следующие задачи:
Формирование одномерного динамического массива Mass c количеством элементов Kol, задаваемым пользователем, случайным образом.
Сортировка массива Mass по возрастанию при помощи трех алгоритмов сортировки:
- Методом простого выбора.
- Методом простых вставок.
- Методом подсчета сравнений.
Учет времени работы алгоритмов сортировки.
Выведение данных о скорости работы алгоритмов на экран в виде гистограммы.
Сохранение отсортированного массива в файл.
При написании программ для реализации сортировок массивов был использован язык программирования С++. Это один из широко используемых языков программирования, который можно использовать для написания программ, работающих в операционной среде Windows. Среда Borland C++ Builder 6- это сложный механизм, обеспечивающий высокоэффективную работу программиста.
3. Выбор структур данных для решения поставленной задачи.
Таблица 1
Наименование |
Обозначение |
Тип данных |
Массив |
Mass |
Int |
Переменная |
Kol,i |
long |
Переменная |
SlSortTime |
Int |
Переменная |
ShellSortTime |
Int |
Переменная |
QSortTime |
Int |
Файл |
f |
FILE |
Массив |
Mass1 |
Int |
Массив |
Mass2 |
Int |
Массив |
Mass3 |
Int |
Переменная |
vremya |
Int |
Переменная |
start |
Int |
Переменная |
end |
Int |
Переменная |
i,j,k |
Int |
Переменная |
tmp |
Int |
Переменная |
max, n |
Int |
Переменная |
x0, y0,w,h |
Int |
Переменная |
del |
Float |
Указатель |
*Mass1 |
Int |
Указатель |
*Mass2 |
Int |
Указатель |
*Mass3 |
Int |
4. Логическое проектирование
Метод простого выбора
При сортировке массиваметодом выбора применяется базовый алгоритм поиска максимального (минимального) элемента и его номера.
Алгоритм сортировки массива методом выбора:
Для исходного массива выбрать максимальный элемент.
Поменять его местами с последним элементом (после этого самый большой элемент будет стоять на своем месте).
Повторить п.п. 1-2 с оставшимися n-1 элементами, то есть рассмотреть часть массива, начиная с первого элемента до предпоследнего, найти в нем максимальный элемент и поменять его местами с предпоследним (n-1)- м элементом массива, затем с оставшиеся (n-2)-мя элементами и так далее, пока не останется один элемент, уже стоящий на своем месте.
Для упорядочения массива потребуется (n-1) просмотров массива. В процессе сортировки будет увеличиваться отсортированная часть массива, а неотсортированная, соответственно, уменьшаться.
При сортировке данных выполняется обмен содержимого переменных. Для обмена необходимо создавать временную переменную, в которой будет храниться содержимое одной из переменных. В противном случае ее содержимое окажется утерянным.
Метод простых вставок
Сортировка вставками — достаточно простой алгоритм. Как в и любом другом алгоритме сортировки, с увеличением размера сортируемого массива увеличивается и время сортировки. Основным преимуществом алгоритма сортировки вставками является возможность сортировать массив по мере его получения. То есть имея часть массива, можно начинать его сортировать. В параллельном программировании такая особенность играет не маловажную роль.
Сортируемый массив можно разделить на две части — отсортированная часть и неотсортированная. В начале сортировки первый элемент массива считается отсортированным, все остальные — не отсортированные. Начиная со второго элемента массива и заканчивая последним, алгоритм вставляет неотсортированный элемент массива в нужную позицию в отсортированной части массива. Таким образом, за один шаг сортировки отсортированная часть массива увеличивается на один элемент, а неотсортированная часть массива уменьшается на один элемент.