Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MUProgramm_C++.doc
Скачиваний:
50
Добавлен:
21.03.2015
Размер:
604.16 Кб
Скачать

Лабораторная работа № 9. Алгоритмы и программы сортировки

1. Цель работы

Изучение методов, алгоритмов, процедур поиска и сортировки массивов. Разработка алгоритма и процедуры для сортировки массива заданным способом.

2. Порядок выполнения работы

    1. Изучить методы сортировки массивов: пузырьком, вставками, слиянием, перемешиванием (шейкерная), выбором, Шелла, быстрая (Хоара). Изучить алгоритмы поиска элемента в отсортированном массиве.

    2. Исследовать библиотеки С++ на наличие функций сортировки, реализующих алгоритмы из списка в п. 2.1, изучить работу с найденными функциями.

    3. Разработать алгоритм решения индивидуального задания сортировки, оформить его в виде функции с параметрами.

    4. Разработать алгоритм для подсчета времени работы различных методов сортировки, причем для массивов разного размера. Алгоритм должен соответствовать требованиям структурного подхода. Необходимо организовать интерфейс ввода – вывода всех требуемых данных, организовать проверку входных данных на допустимые значения. Алгоритм решения задачи разбить на функциональные блоки, оформить блоки в виде функций.

    5. Разработать программу на языке С++ для алгоритма п.2.4, содержащую работу с библиотечными функциями сортировки и разработанной индивидуальной (п. 2.3), удовлетворяющую требованиям п.2.6, используя модульный подход.

    6. Требования к проекту. Сформировать заголовочный модуль и файл реализации, которые будут содержать разработанные функции. Написать главную функцию main, используя правила структурного подхода: она должна содержать в основном только вызов функций, все вычисления должны быть внутри разработанных функций.

    7. Выполнить отладку и компиляцию программы, получить исполняемый файл.

    8. Выполнить тестирование программы несколькими наборами входных данных.

    9. Получить для каждого метода сортировки зависимость времени работы от размера исходных данных. Выполнить анализ полученных данных (в отчет по лабораторной работе).

    10. Составить диаграмму модулей, дерево вызова функций и спецификации функций (в отчет по лабораторной работе).

3. Контрольные вопросы

1. Что такое «метод дихотомии»? Для чего он используется?

2. Как оценить эффективность того или иного метода сортировки?

3. Для чего используется сортировка? В каких случаях затраты на сортировку оправданы?

4. Как осуществляется добавление новых данных в отсортированный массив?

Приложение 1

СПЕЦИФИКАЦИЯ ФУНКЦИЙ (лаб. раб. № 6)

Название

void task(int size, int arr[], int y)

Назначение

Преобразует массив, таким образом, что, первый по порядку член последовательности (массива), не меньший всех остальных членов, заменяется на значение y.

Вход

size - размерность массива (целое число);

arr[] - указатель на массив целых чисел (указатель на первый элемент массива);

y - целочисленное число, на которое будет заменен некоторый элемент массива, подходящий под условие задачи.

Выход

Нет.

Глобал. ресурсы

Нет.

Исключит.

ситуации

Нет.

Метод

решения

Проходим по входному массиву arr путем последовательного перебора элементов, пока выполняется условие - что следующий элемент больше предыдущего. Как только условие нарушается, проход заканчиваем на текущем элементе, а значение элемента, заменяем по условию задачи на y.

Алгоритм работы

1. Объявление и инициализация начального значения счетчика i нулем;

2. Сравниваем следующий элемент массива с текущим: пока следующий элемент массива arr[i+1] больше текущего arr[i] выполняем п.2.1-2.2, иначе - переход к п. 3;

2.1. Инкрементируем значение счетчика i ;

2.2. Сравниваем увеличенное на 1 значение счетчика i с размерностью массива size (осуществляем контроль за тем, чтобы массив не вышел за свои границы), если (i+1) равно size, то переходим к п. 2.2.1, иначе к п. 3;

2.2.1. Остановка (прерывание) цикла while командой break;

3. Присвоение найденному элементу массива arr[i] значения y;

4. Конец.

Схема алгоритма:

ДИАГРАММА МОДУЛЕЙ (лаб. раб. № 7)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]