Автор работы: Пользователь скрыл имя, 24 Апреля 2013 в 18:42, курсовая работа
Мова асемблера будь-якого процесора суттєво складніша будь-якої мови високого рівня. Щоб скористатись всіма можливостями мови асемблера, треба по крайній мірі знати команди мікропроцесора, а їх число з усіма можливими варіантами переважає 100, їх кількість значно перевищує кількість операторів і ключових слів інших мов високого рівня. Проблема ускладнюється ще тим, що зміни в асемблері виникають набагато швидше ніж в мовах високого рівня, це зв’язано з появою нових мікропроцесорів і відповідно нових команд.
ВСТУП 5
Розділ 1 Теоретична частина 6
1.1 Алгоритм сортування 6
1.2 Відомі варіанти сортування 7
Розділ 2 Практична частина 12
2.1 Сортування Шелла 12
2.2 Текст програми сортування Шелла 14
2.3 Графічний матеріал 18
ВИСНОВКИ 19
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 20
МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
Київський національний університет технологій та дизайну
Кафедра інформаційних та комп’ютерних технологій
КУРСОВА РОБОТА
з дисципліни
”Системне програмування”
на тему
«Реалізація на асемблері алгоритму сортування Шелла»
Допущена до захисту Виконав:
“____” ___________ 2011 р.
Захищена з оцінкою гр. БЧСП-1-09
____________________ Гонч
“____” ___________ 2011 р.
(підпис)
Керівник роботи ст. викл. Півень О.Б.
__________________ (
Черкаси 2012
Форма № У-9.01 | |||||||||||
Киівський національний університет технології та дизайну | |||||||||||
(назва вищого навчального | |||||||||||
Кафедра ______________________________ | |||||||||||
Дисципліна ______________________________ | |||||||||||
Спеціальність ________________ | |||||||||||
Курс ____________ Група ____________ Семестр ____________________ | |||||||||||
ЗАВДАННЯна курсовий проект (роботу) студента | |||||||||||
(прізвище, ім’я, побатькові) | |||||||||||
1.Тема проекту (роботи) |
|||||||||||
2.Строк здачі студентом закінченого проекту (роботи) |
| ||||||||||
3.Вихідні дані до проекту (роботи) |
|||||||||||
4.Зміст розрахунково-пояснювальної записки (перелік питань, які підлягають розробці) | |||||||||||
5.Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень) |
|||||||||||
6.Дата видачі завдання ______________________________ | |||||||||||
Календарний план | |||||||||||
№ п/п |
Назва етапів курсового проекту (роботи) |
Строк виконання етапів проекту (роботи) |
Примітка | ||||||||
Студент дипломник |
|||||||||||
(підпис) | |||||||||||
Керівник |
|||||||||||
|
(підпис) |
«_____»____________ _____ р.
ЗМІСТ
ВСТУП
Програмування на мові асемблера вважається складною задачею, причини цього такі:
Мова асемблера будь-якого проц
Програміст, який використовує мови асемблера повинен сам слідкувати за розподілом пам’яті та вмістом регістрів, щоб коректно розподіляти і оперувати пам’яттю, в мовах високого рівня це робиться автоматично при допомозі компілятора, але ця обставина має перевагу: можна оптимально розташувати дані в пам’яті, забезпечити максимальну швидкість виконання та мінімальну довжину програми.
Програми на мові асемблера важче
проектувати та підлагоджувати, треба
весь час пам’ятати, що конкретно
знаходиться в кожному
Розділ 1 Теоретична частина
Алгоритм сортування - це алгоритм для впорядкування елементів у списку. У випадку, коли елемент списку має кілька полів, поле, що служить критерієм порядку, називається ключем сортування. На практиці в якості ключа часто виступає число, а в інших полях зберігаються будь-які
дані, котрі ніяк не впливають на роботу алгоритму.
Алгоритми сортування оцінюються за швидкістю виконання та ефективності використання пам'яті:
Час - основний
параметр, що характеризує швидкодію
алгоритму. Називається також
Пам'ять - ряд
алгоритмів вимагає виділення додаткової
пам'яті під тимчасове
Однією з важливих властивостей алгоритму є його сфера застосування. Тут основних типів упорядкування два:
1. Внутрішня
сортування оперує з масивами,
цілком поміщається в
В сучасних архітектурах персональних комп'ютерів широко застосовується підкачка і кешування пам'яті. Алгоритм сортування повинен добре поєднуватися з вживаними алгоритмами кешування і підкачки.
2. Зовнішня
сортування оперує з запам'
Доступ до носія здійснюється послідовним чином: у кожен момент часу можна вважати або записати тільки елемент, наступний за поточним. Обсяг даних не дозволяє їм розміститися в ОЗУ.
Також алгоритми класифікуються за:
- потребами у додатковій пам'яті або її відсутності;
- потребами в знаннях про структуру даних, що виходять за рамки операції порівняння, або відсутності такої.
1.2 Відомі алгоритми сортування
Серед відомих алгоритмів сортування розрізняють:
1. За час O (n2):
- сортування вибором;
- сортування вставкою;
- сортування обміном;
2. За час O (n log n):
- пірамідальне сортування;
- швидке сортування;
- сортування злиттям;
3. За час O (n) з використанням додаткової інформації про елементи:
- сортування за розрядами;
- сортування комірками;
- сортування підрахунком;
4. За час O (n log2 n):
- сортування злиттям
- сортування Шелла;
5. За час O(nn!):
- сортування перестановкою.
Сортування вибором — простий алгоритм сортування лінійного масиву, на основі вставок. Має ефективність n2, що робить його неефективним при сортування великих масивів, і в цілому, менш ефективним за подібний алгоритм сортування включенням. Сортування вибором вирізняється більшою простотою, ніж сортування включенням, і в
деяких випадках, вищою продуктивністю.
Сортування вибором не є складним в аналізі та порівнянні його з іншими алгоритмами, оскільки жоден з циклів не залежить від даних у списку. Знаходження найменшого елементу вимагає перегляду усіх n елементів (у даному випадку n − 1 порівняння), і після цього, перестановки його до першої позиції. Знаходження наступного найменшого елементу вимагає перегляду n − 1 елементів, і так далі, для (n − 1) + (n − 2) + ... + 2 + 1 = n(n − 1) / 2 ∈ Θ(n2) порівнянь. Кожне сканування вимагає однієї перестановки для n − 1 елементів (останній елемент знаходитиметься на своєму місці).
Сортування включенням — простий алгоритм сортування на основі порівнянь. На великих масивах є значно менш ефективним за такі алгоритми, як швидке сортування, пірамідальне сортування та сортування злиттям. Однак, має цілу низку переваг:
- простота у реалізації;
- ефективний (за звичай) на маленьких массивах;
- ефективний при сортуванні масивів, дані в яких вже непогано відсортовані: продуктивність рівна O(n + d), де d — кількість інверсій;
- на практиці
ефективніший за більшість
- є стабільним алгоритмом.
Сортування обміном або Сортування бульбашкою є простим алгоритмом сортування. Алгоритм працює таким чином — у поданому наборі даних (списку чи масиві) порівнюються два сусідні елементи. Якщо один з елементів, не відповідає критерію сортування (є більшим, або ж, навпаки, меншим за свого сусіда), то ці два елементи міняються місцями. Прохід по списку продовжується до тих пір, доки дані не будуть відсортованими. Алгоритм отримав свою назву від того, що процес сортування за ним нагадує поведінку бульбашок повітря у резервуарі з водою. Оскільки для роботи з елементами масиву він використовує лише порівняння, це сортування на основі порівнянь.
Складність алгоритму у найгіршому у середньостатистичному випадку рівна О(n²), де n — кількість елементів для сортування. Існує чимало значно ефективніших алгоритмів, наприклад, з найгіршою ефективністю рівною O(n log n). Тому даний алгоритм має низьку ефективність у випадках, коли N є досить великим, за винятком рідких конкретних випадків, коли заздалегідь відомо, що масив з самого початку буде добре відсортований.
Швидке сортування (англ. Quick Sort) — алгоритм сортування, добре відомий, як алгоритм розроблений Чарльзом Хоаром, який не потребує додаткової пам'яті і виконує у середньому операцій. Однак, у найгіршому випадку робить O(n2) порівнянь. Оскільки алгоритм використовує дуже прості цикли і операції, він працює швидше інших алгоритмів, що мають таку ж асимптотичну оцінку складності.
Ідея алгоритму
полягає в переставлянні
Швидке сортування є алгоритмом на основі порівнянь, і не є стабільним.
Сортування злиттям — алгоритм сортування, в основі якого лежить принцип Розділяй та володарюй. В основі цього способу сортування лежить злиття двох упорядкованих ділянок масиву в одну впорядковану ділянку іншого масиву. Злиття двох упорядкованих послідовностей можна порівняти з перебудовою двох колон солдатів, вишикуваних за зростом, в одну, де вони також розташовуються за зростом. Якщо цим процесом керує офіцер, то він порівнює зріст солдатів, перших у своїх колонах і вказує, якому з них треба ставати останнім у нову колону, а кому залишатися першим у своїй. Так він вчиняє, поки одна з колон не вичерпається — тоді решта іншої колони додається до нової.
Під час сортування в дві допоміжні черги з основної поміщаються перші дві відсортовані підпослідовності, які потім зливаються в одну і результат записується в тимчасову чергу. Потім з основної черги беруться наступні дві відсортовані підпослідовності і так до тих пір доки основна черга не стане порожньою. Після цього послідовність з тимчасової черги переміщається в основну чергу. І знову продовжується сортування злиттям двох відсортованих підпослідовностей. Сортування триватиме до тих пір поки довжина відсортованої підпослідовності не стане рівною довжині
самої послідовності.
Розділ 2 Практична частина
2.1 Сортування Шелла
Сортування Шелла (англ. Shell sort) - алгоритм сортування, що є вдосконаленим варіантом сортування вставками. Ідея методу Шелла полягає в порівнянні елементів, що стоять не тільки поруч, але і на певній відстані один від одного.
Алгоритм базується на двох тезах:
1. Сортування вставками
2. Сортування вставками неефективне, тому що переміщує елемент тільки на одну позицію за раз.
Тому сортування Шелла виконує декілька впорядкувань вставками, кожен раз порівнюючи і переставляючи елементи, що знаходяться на різній відстані один від одного. Сортування не є стабільним(не гарантує збереження порядку елементів, які вже відсортовані).
При сортуванні Шелла спочатку порівнюються і сортуються між собою значення, віддалені один від одного на деякій відстані (про вибір значення див. нижче). Після цього процедура повторюється для деяких менших значень, а завершується сортування Шелла упорядкуванням елементів при (тобто звичайної сортуванням вставками). Ефективність сортування Шелла в певних випадках забезпечується тим, що елементи «швидше» встають на свої місця (в простих методах сортування, наприклад, бульбашкової, кожна перестановка двох елементів зменшує кількість інверсій в списку максимум на 1, а при сортуванні Шелла це число може бути більше ).
Информация о работе Реалізація на асемблері алгоритму сортування Шелла