Автор работы: Пользователь скрыл имя, 18 Декабря 2013 в 11:04, курсовая работа
Предмет исследования - современные методы разработки программ таких, как объектно-ориентированное программирование и визуальное проектирование, а также структурное и модульное программирование. Цель курсовой работы - систематизация, углубление и активное применение знаний по системному программированию, закрепление знаний, полученных в лекционном курсе, а также на практических и лабораторных занятиях. Метод исследования - изучение литературы, составление и отладка программ на компьютере. Программа типа “Sort” может использоваться, как программа, предназначенная для сортировки элементов массива.
Предмет исследования - современные
методы разработки программ таких, как
объектно-ориентированное
Цель курсовой работы - систематизация, углубление и активное применение знаний по системному программированию, закрепление знаний, полученных в лекционном курсе, а также на практических и лабораторных занятиях.
Метод исследования - изучение литературы, составление и отладка программ на компьютере.
Программа типа “Sort” может использоваться, как программа, предназначенная для сортировки элементов массива.
Разработан проект “Sort”
полностью соответствующий
КЛЮЧЕВЫЕ СЛОВА: SORT, Visual C++, функция, проект, сообщение, программа.
ВВЕДЕНИЕ
В настоящее время вычислительная техника проникла практически во все сферы человеческой деятельности. С помощью ЭВМ можно решать самые разные задачи. Но для того, чтобы решить поставленную задачу, необходимо указать последовательность действий, выполнение которых приведёт к требуемому результату, – составить программу. Для удобства работы с ЭВМ эта операция производится с помощью языков программирования (высокого или низкого уровня).
Один из широко используемых языков программирования - это Visual C++, который можно использовать для написания программ, работающих в операционной среде Windows. На данное время одной из самых распространенных его версий является Microsoft Visual C++, и среда программирования Microsoft Developer Studio 6.0.
Среда программирования Microsoft Developer Studio 6.0 позволяет создавать тексты программ, компилировать их, находить ошибки и оперативно их исправлять; компоновать программы из отдельных частей, включая стандартные модули, отлаживать и выполнять отлаженную программу.
Используя перечисленные возможности, можно создавать различные прикладные программы, например, такие, как программа, написанная при выполнении данной курсовой работы.
1 Решение интеллектуальной задачи на компьютере
В данном курсовом проекте необходимо разработать программу типа "Sort", с помощью которой можно производить сортировку массива различными методами. В частности в данном курсовом проекте используются следующие методы: “Обменная сортировка с разделением (quicksort)”, “Метод Шелла” и “Метод прямого обмена (Пузырька)”. Программа должна иметь удобный интерфейс.
2 ПОСТРОЕНИЕ АЛГОРИТМА КОДИРОВАНИЯ НА VISUAL C++
Среда Visual C++ - это сложный
механизм, обеспечивающий высокоэффективную
работу программиста. Создание прикладных
программ, или приложений выполняется
в интегрированной среде
Интегрированная среда разработки Visual C++ представляет собой многооконную систему. Вид интегрированной среды разработки (интерфейс) может различаться в зависимости от настроек. Кроме стандартных окон, на экране могут присутствовать и другие окна, отображаемые при вызове соответствующих средств, например, Image Editor (Редактор изображений). Окна Visual C++ (но не главное) можно перемещать, убирать с экрана, а также изменять их размеры.
Несмотря на наличие многих окон, Visual C++ является одно-документной средой, т.е. позволяет одновременно работать только с одним приложением (проектом приложения). Название проекта приложения выводится в строке заголовка главного окна в верхней части экрана.
Если свернуть главное окно, то происходит минимизация всего интерфейса Visual C++ и, соответственно, всех открытых окон. При закрытии главного окна работа с Visual C++ прекращается.
Самой последней и наиболее
усовершенствованной версией
Visual C++ 6.0 может работать
в среде операционных систем
от Windows 95 до Windows 2000. Особенных требований
к компьютеру система не
2.1 Алгоритм решения задачи
Основными операциями, выполняемыми
над массивами, являются упорядочение
(сортировка) записей и поиск в
массиве записи по заданному условию(
по ключу ). Сортировка является операцией
расстановки записей массива
в определенном порядке в соответствии
с некоторым критерием
С - количество операций сравнения пар ключей,
Р - число перестановок элементов ,
S - резерв памяти.
Среднее количество операций сравнения зависит от метода сортировки и при рациональном выборе метода достигает некоторого минимума, зависящего от n - размера массива (размер массива - количество содержащихся в нём записей). Методы внутренней сортировки можно разделить на две группы:
- методы, не требующие резерва памяти;
- методы, требующие резерва памяти.
К первой группе относятся
такие методы, как метод выборки,
"пузырька", вставки, Шелла. Ко второй
группе относятся метод квадратичной
выборки, метод слияния и
другие. Простые методы сортировки
(выбором, обменом, вставкой) требуют
приблизительно n**2 сравнений. Более
сложные алгоритмы обычно обеспечивают
получение результата за n*log2(n) сравнений
в среднем: сортировка методом Шелла,
слиянием, "быстрая сортировка".
Однако оптимальной в любом случае
сортировки не существует, так как
их эффективность существенно
Рассмотрим алгоритмы наиболее распространенных методов внутренней сортировки ( упорядочение выполняется по возрастанию значений ключа ).
· Метод "Пузырька".
При использовании этого
способа требуется самое
Характеристики сортировки
методом "пузырька" в худшем случае
составляют n(n-1)/2 сравнений и n(n-1)/2 перестановок
(худшим считается случай,когда
Сортировку пузырьковым
методом можно в некоторой
степени улучшить и тем самым
немного улучшить ее временные характеристики.
Можно, например, заметить, что сортировка
пузырьковым методом обладает
одной особенностью: расположенный
не на своем месте в конце массива
элемент (например, элемент "а" в
массиве "dcab") достигает своего
места за один проход, а элемент,
расположенный в начале массива
(например, элемент "d"), очень медленно
достигает своего места. Необязательно
все просмотры делать в одном
направлении. Вместо этого всякий последующий
просмотр можно делать в противоположном
направлении. В этом случае сильно
удаленные от своего места элементы
будут быстро перемещаться в соответствующее
место. Хотя эта сортировка является
улучшением пузырьковым методом,
ее нельзя рекомендовать для
· Метод Шелла.
Общий метод, который использует сортировку вставкой, применяет принцип уменьшения расстояния между сравниваемыми элементами. Сначала сортируются все элементы, которые смещены друг от друга на три позиции. Затем сортируются все элементы, которые смещены на две позиции. И, наконец, упорядочиваются все соседние элементы.
При поверхностном взгляде на алгоритм нельзя сказать, что он дает хороший результат и даже то, что в результате получится отсортированный массив. Однако, он дает и то и другое. Эффективность этого алгоритма объясняется тем, что при каждом проходе используется относительно небольшое число элементов или элементы массива уже находятся в относительном порядке, а упорядоченность увеличивается при каждом новом просмотре данных.
Расстояния между
В рассмотренных алгоритмах
сортировки запись перемещается каждый
раз только на одну позицию. При этом
среднее время работы будет в
лучшем случае пропорционально n. Методом,
существенно превосходящим
h1=[n/2], а hi=h((i-1)/2).
В более поздних работах Хиббард показал, что для ускорения процесса целесообразно определить шаг h1 по формуле:
h1=2**k+1 , где 2**k < n <= 2**(k+1).
После выбора h1 методом вставки упорядочиваются группы, содержащие элементы с номерами позиций
i, i+h1, i+2*h1, ..., i+mi*h1.
При этом i=1,2,...,h1; m[i] - наибольшее целое, удовлетворяющее неравенству i+m[i]*hi <= n.
Затем выбирается шаг h2<h1 и упорядочиваются группы, содержащие элементы с номерами позиций i, i+h2, ..., i+m[i]*h2. Эта процедура со все уменьшающимися шагами продолжается до тех пор, пока очередной шаг h[l] станет равным единице (h1>h2>...>hl). Этот последний этап представляет собой упорядочение всего массива методом вставки. Но так как исходный массив упорядочивался отдельными группами с последовательным объединением этих групп, то общее количество сравнений значительно меньше, чем n /4, требуемое при методе вставки. Число операций сравнения пропорционально n*(log2(n))**2 .
· Обменная сортировка с разделением (Quicksort).
Данный метод является
одним из лучших методов внутренней
сортировки и весьма эффективен для
больших массивов. Целью каждого
шага в данном методе является помещение
очередной рассматриваемой
Каждый раз массив разбивается на два подмассива, один из которых обрабатывается, в то время как границы второго запоминаются с тем, чтобы он был обработан позже. В этих целях может быть использован стек, представляющий собой матрицу из двух столбцов. В первом столбце хранятся нижние границы разделяемых подмассивов, во втором - верхние границы. Всякий раз один из полученных в результате разделения подмассивов подвергается дальнейшему разделению, а границы другого помещаются в свободную строку стека (обычно в стек помещаются границы большего по длине массива, поскольку это уменьшает требуемый размер стека). Как только завершается процесс разделения текущего подмассива, т.е. ее длина станет меньше трех, для разделения берется подмассив, границы которого были занесены в стек последними. Строка стека, в которой хранились эти границы, освобождается. Процесс упорядочения завершается, когда стек полностью освобождается.