- •1. Анотація
- •Програма яка порівнює методи прямого включення і « бульбашки » сортування масивів.
- •2. Вступ
- •3. Алгоритми, методи сортування
- •4. Аналіз розв’язуваної задачі
- •5. Вибір мови і технології програмування
- •6. Опис процесу розв’язку задачі
- •7. Сортування методом прямого включення (вставки)
- •8. Аналіз прямого включення
- •9. Прямий обмін
- •10. Бульбашкове сортування
- •11. Аналіз алгоритмів на основі прямого обміну.
- •12. Блок-схеми процедур
- •13. Опис програми
- •14. Структура вхідних і вихідних файлів
- •15. Опис роботи програми
- •16. Порівняльний аналіз
- •17. Інструкція користувачу
- •18. Висновки
- •19. Список використаної літератури
- •20. Додаток
6. Опис процесу розв’язку задачі
В якості першого екскурсу в області алгоритмів сортування ми розглянемо декілька методів сортування, які зручні для сортування невеличких файлів зі спеціальною структурою.
В даній роботі розглянуто сортування двома способами, це сортування прямого включення або методом вибору та методом « Бульбашки ». Також в роботі проаналізовано базові дані методів сортування, на основі яких можна оцінити прийняття алгоритму для конкретних задач.
У багатьох прийняттях сортування часто бувають зручні прості алгоритми. По-перше, дуже часто програма сортування використовується лише один або невелику кількість разів. Після розв’язку задачі сортування для деякого набору даних приклад обробки таких даних виконує інші дії. Якщо елементарне сортування працює не повільніше інших частин прикладів – наприклад вводу чи виводу даних – то немає потреби шукати більш швидший метод. Якщо число сортуємих елементів не дуже велике ( не більше ніж декілька сотин ), можно скористатися простім методом сортування. По-друге елементарні методи завжди зручні для файлів з невеликим розміром. Сортування виконується легко і для файлів які вже майже відсортовані або містять велике число однакових ключей. У роботі видно що деякі методи особливо ефективні при сортуванні таких структурованих файлів.
7. Сортування методом прямого включення (вставки)
Цей метод звичайно використовують гравці в карти. Елементи ( карти ) умовно розділяються на готову послідовність а1, … , аi – 1 і вхідну послідовність
аi, …, аn . На кожному кроці, починаючи з i =2 і збільшуючи і на одиницю, беруть і-н елемент з вхідною послідовністю і передають в готову послідовність, вставивши його на потрібне місце.
Пример сортировки прямого включения
44 55 12 42 94 18 06 67
і = 2 44 55 12 42 94 18 06 67
і = 3 12 44 55 42 94 18 06 67
і = 4 12 42 44 55 94 18 06 67
і = 5 12 42 44 55 94 18 06 67
і = 6 12 18 42 44 55 94 06 67
і = 7 06 12 18 42 44 55 94 67
і = 8 06 12 18 42 44 55 67 94
Процес сортування включеннями показано на прикладі восьми чисел. Алгоритм сортування прямого включення має вигляд наступний:
for i=2, to n do
begin x:=a[i];
“ вставити х на потрібне місце аi … аi ”
end;
При пошуку потрібного місця зручно чередувати порівняння і переадресування, тобто як би «просіювати» х, порівняння його з черговим елементом аі , або вставляючи х, або переадресовуючи а1 праворуч і здвигаючи ліворуч. Отже бачимо, що «просіювання» може закінчитись при двух різних умовах:
Знайден елемент а1 з ключем менший за ключ х.
Достигнувши лівий кінець готової послідовності.
Цей приклад циклу з двома умовами закінчення дає змогу добре роздивитись прийом фіктивного елемента («бар’єра»). Його можна легко застосувати в цьому випадку, установивши бар’єр а0 =х . (Замітимо, що для цього потрібно розглядати діапазон індексів в описі а до 0, …, n.) Остаточний алгоритм представлен у вигляді програми:
Також цю процедуру можна записати у такому вигляді: