
- •Введение
- •Теоретический раздел
- •Определение списка
- •1.2 Свойства списка
- •1.3 Виды списков
- •1.3.1 Линейный односвязный список
- •1.3.2 Кольцевой односвязный список
- •1.3.3 Линейный двусвязный список
- •1.3.4 Кольцевой двусвязный список
- •1.3.5 Многосвязные списки
- •1.4 Описание компилятора Microsoft Visual Studio
- •1.5 Visual Studio 2010
- •1.6 Приложения Windows Forms
- •1.6.1 Графические элементы Windows Forms
- •Рисунки;
- •Типографская разметка.
- •1.6.1.1 Двухмерная векторная графика
- •1.6.1.2 Рисунки
- •1.6.1.3 Типографская разметка
- •1.6.2 Классы Windows Forms
- •1.7 Определение сортировки слиянием
- •1.8 Пример сортировки слиянием
- •1.9.1 Временя работы
- •1.9.2 Анализ времени работы сортировки слиянием через рекуррентное соотношение
- •1.10 Достоинства и недостатки сортировки слиянием
- •Проектный раздел
- •2.1 Математическая постановка задачи
- •2.2 Описание входных и выходных данных
- •Программный раздел
- •3.1 Описание структуры программы и её основных частей
- •3.2 Описание функций составных частей и связей между ними
- •Экспериментальный раздел Тестирование
- •Заключение
- •Список использованных источников
1.6.2 Классы Windows Forms
Интерфейс управляемых классов GDI+ содержит около 60 классов, 50 перечислений и 8 структур. Класс Graphics является основой интерфейса GDI+, этот класс непосредственно выполняет рисование прямых и кривых линий, геометрических фигур, вывод рисунков и текста.
Многие классы работают совместно с классом Graphics. Например, метод DrawLine получает объект Pen, содержащий атрибуты рисуемой линии, такие как цвет, ширина, наличие или отсутствие пунктира и т. п. Метод FillRectangle может получать указатель на объект LinearGradientBrush, работающий совместно с объектом Graphics и реализующий заполнение прямоугольника постепенно меняющимся цветом. Объекты Font и StringFormat определяют то, как объект Graphics выводит на экран текст. Объект Matrix обеспечивает выполнение различных действий по объемным преобразованиям объекта Graphics, которые используются для вращения, масштабирования и отражения рисунков.
Класс Pen — служит для рисования линий, контуров и отрисовки других геометрических объектов.
Класс Brush — служит для заливки областей, например фигур, изображений или текста.
Класс Font — содержит описание фигур, которые должны использоваться при отрисовке текста.
Структура Color — содержит различные цвета.
Интерфейс GDI+ предоставляет несколько структур, таких как Rectangle, Point и Size, которые используются для хранения графических данных. Некоторые классы также используются, в основном, как структурированные типы данных. Например, класс BitmapData является вспомогательным хранилищем данных для класса Bitmap, а класс PathData является вспомогательным хранилищем данных для класса GraphicsPath.
В GDI+ определены несколько перечислений, которые являются коллекциями связанных констант.Например, перечисление LineJoin содержит элементы Bevel, Miter и Round, определяющие стили соединения линий.
1.7 Определение сортировки слиянием
Сортировка слиянием (англ. merge sort) — алгоритм сортировки, который упорядочивает списки (или другие структуры данных, доступ к элементам которых можно получать только последовательно, например — потоки) в определённом порядке. Эта сортировка — хороший пример использования принципа «разделяй и властвуй». Сначала задача разбивается на несколько подзадач меньшего размера. Затем эти задачи решаются с помощью рекурсивного вызова или непосредственно, если их размер достаточно мал. Наконец, их решения комбинируются, и получается решение исходной задачи. Сам алгоритм сортировки был изобретён Джоном фон Нейманом в 1945 году.3
1.8 Пример сортировки слиянием
Сначала делим список на кусочки (по 1 элементу), затем сравниваем каждый элемент с соседним, сортируем и объединяем. В итоге, все элементы отсортированы и объединены вместе.
Для решения задачи сортировки эти три этапа выглядят так:
1.Сортируемый список разбивается на две части примерно одинакового размера;
2.Каждая из получившихся частей сортируется отдельно, например — тем же самым алгоритмом;
3.Два упорядоченных подсписка половинного размера соединяются в один.
1.1. - 2.1. Рекурсивное разбиение задачи на меньшие происходит до тех пор, пока размер списка не достигнет единицы (любой список, длина которого равна единицы, можно считать упорядоченным).
3.1. Соединение двух упорядоченных списков в один.
Основную идею слияния двух отсортированных списков можно объяснить на следующем примере. Пусть мы имеем два подсписка. Пусть также, элементы подсписков в каждом из этих подсписков отсортированы по возрастанию. Тогда:
3.2. Слияние двух подсписков в третий результирующий список.
На каждом шаге мы берём меньший из двух первых элементов подсписков и записываем его в результирующий список. Счетчики номеров элементов результирующего списка и подсписка, из которого был взят элемент, увеличивается на единицу.
3.3. "Прицепление" остатка.
Когда один из подсписков закончился, происходит добавление всех оставшихся элементы второго подсписка в результирующий список.