Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АМ_8_LR_9.doc
Скачиваний:
7
Добавлен:
23.08.2019
Размер:
118.78 Кб
Скачать

Міністерство освіти і науки, молоді та спорту України

Прикарпатський національний університет

імені Василя Стефаника

Кафедра радіофізики і електроніки

Лабораторна робота №8

з дисципліни

"Алгоритми та методи обчислень"

Алгоритми сортування даних:

Івано-Франківськ – 2011

Реалізація сортування “бульбашковим” методом;

Реалізація сортування вставками

Мета роботи:

- оволодіти навичками роботи з рекурсивними тріадами;

- навчитися вирішувати завдання з використанням рекурсії.

Теоретичні відомості

Ключові терміни:

Алгоритмы сортировки данных

Данную тему следует рассматривать в двух аспектах. Во-первых, при решении различных задач повышенной сложности данные довольно часто требуется упорядочить по некоторому признаку (то есть отсортировать). При этом, если специально не оговорено иное, считается, что массив требуется отсортировать в порядке неубывания значений его элементов (для различных элементов – в порядке возрастания). Во-вторых, задача сама по себе может требовать построения оптимального в смысле определенных требований или нестандартного алгоритма сортировки. Помимо этого, специфика задач повышенной сложности может состоять в формализации критерия, по которому следует сортировать данные.

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

Название сортировки

Количество сравнений

Количество присваиваний

Простой обмен (пузырьковая)

O(N2)

O(N2)

Прямой выбор

O(N2)

O(N)

Простая вставка

O(N2)

O(N2)

Быстрая

O(N2) (на практике O(N log N))

O(N2) (на практике O(N log N))

Слияниями

O(N log N)

O(N log N)

Пирамидальная

O(N log N)

O(N log N)

Таким образом, наилучшую теоретическую оценку имеют два последних из перечисленных в таблице алгоритмов, однако, в практическом программировании для упорядочивания данных обычно используют быструю сортировку, как в силу высокой производительности (особенно выигрывает данный алгоритм по числу реально выполняемых присваиваний), так и в силу простой реализации. Тем не менее, в задачах повышенной сложности данные могут быть представлены так, что отсортировать за отведенное время их можно будет лишь с помощью пирамидальной сортировки или какой-либо другой.

Методичні вказівки

В даній роботі пропонується написати програму обраною мовою програмування, у якій скористатися рекурсією відповідно до завдання.

Завдання необхідно вирішити відповідно до вивчених рекурсивних методів рішення завдань і методами обробки числових даних.

При виконанні лабораторної роботи для кожного завдання потрібно написати програму, що одержує на вході числові дані, виконує їхню обробку відповідно до вимог завдання і виводить результат на екран. Для обробки даних необхідно реалізувати рекурсивну функцію. Введення даних здійснюється із клавіатури з урахуванням вимог до вхідних даних, що міститься в постановці завдання (введення даних супроводжуйте діалогом). Обмеженнями на вхідні дані є припустимий діапазон значень використовуваних числових типів у обраній мові.

При написанні програми виконуйте коментування коду.

Література

1. Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. – М.: Издательский дом “Вильямс”, 2001. – 384 с.

2. Вирт Н. Структуры данных и алгоритмы. С примерами на Паскале. Издание 2. – СПб.: Невский диалект, 2008. – 352 с.

3. Кнут Д. Искусство программирования для ЭВМ / В 3-х томах. – М.: “Мир”, 2008.

4. Новиков Ф. А. Дискретная математика для программистов. Учебник для вузов. 2-е изд. – СПб.: Питер, 2005. – 364 с.

Завдання

1. Вивчіть словесну постановку завдання, виділивши при цьому всі види даних;

2. Розробіть рекурсивну тріаду відповідно до постановки завдання: виконайте параметризацію, виділіть базу і оформіть декомпозицію рекурсії.

3. Відобразіть етапи рекурсивної тріади у математичній моделі;

4. Сформулюйте математичну постановку завдання;

5. Виберіть метод рішення завдання, якщо це необхідно;

6. Методом процедурної абстракції, використовуючи рекурсивні функції, розробіть програму для рішення завдання.

7. Запишіть розроблений алгоритм обраною мовою;

8. Розробіть контрольний тест до програми;

9. Налагодьте програму;

10. Представте звіт роботі.

11. Програму супроводьте коментарями в коді.

Вимоги до звіту

Звіт до лабораторної роботи повинен відповідати наступній структурі:

- титульний лист.

- словесна постановка завдання. У цьому підрозділі проводиться повний опис завдання. Описується суть завдання, аналіз вхідних даних, область їх припустимих значень, одиниці їхнього виміру, можливі обмеження, аналіз умов при яких завдання має рішення (не має рішення), аналіз очікуваних результатів.

- математична модель. У цьому підрозділі вводяться математичні описи дпних і математичний опис їхньої взаємодій. Ціль підрозділу - подати розв'язуване завдання у математичному формулюванні.

- алгоритм рішення завдання. У підрозділі описується розробка структури алгоритму, обґрунтовується абстракція даних, завдання розбивається на підзадачі.

- лістинг програми. Підрозділ повинен містити текст програми обраною мовою програмування.

- контрольний тест. Підрозділ містить набори вихідних даних і отримані в ході виконання програми результати.

- висновки по лабораторній роботі.

- відповіді на контрольні питання.