Опис предметної області - ESEI-ZNU/SortingAlgorithms GitHub Wiki

Предметна область: Сортування масивів є поширеною задачею в програмуванні та обробці даних. Існує багато алгоритмів сортування, кожен із яких має свої переваги та недоліки залежно від розміру даних, їхньої впорядкованості та вимог до обчислювальних ресурсів. Основні поняття: Порівняння – операція визначення відносного порядку двох елементів. Перестановка – зміна місця двох елементів у масиві. Час виконання – загальний час роботи алгоритму сортування. Стабільність сортування – властивість алгоритму зберігати відносний порядок однакових елементів. Асимптотична складність – оцінка часу роботи алгоритму в залежності від кількості вхідних даних. Класифікація алгоритмів сортування: Прості алгоритми:

  • «Бульбашкове" сортування
  • Шейкерне сортування
  • Сортування вставками
  • Сортування вибором Ефективні алгоритми:
  • Швидке сортування
  • Сортування злиттям Опис алгоритмів: Метод "бульбашки": порівнює сусідні елементи та міняє їх місцями, якщо вони знаходяться у невірному порядку. Повторюється до повного впорядкування. Шейкерне сортування: модифікований "бульбашковий" метод, що працює у двох напрямках, покращуючи ефективність. Сортування вставками: вставляє кожен елемент на відповідне місце у відсортованій частині масиву. Сортування вибором: на кожній ітерації знаходить найменший елемент та поміщає його на відповідне місце. Сортування злиттям: ділить масив на дві частини, сортує їх та об’єднує. Швидке сортування: вибирає опорний елемент, розбиває масив на дві частини (менші та більші за опорний) і рекурсивно сортує їх. Розроблені компоненти:

Клас масиву та ітератор (розробник 1):

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

Як розробник 1, я відповідаю за створення базової структури даних у вигляді масиву, який використовується алгоритмами сортування. Мій внесок у проект включає: • Розробка класу для масиву цілих чисел. • Створення засобів доступу до цього масиву. • Реалізація ітератора для зручного перебору елементів масиву.

  1. Основні поняття • Масив — структура даних, яка дозволяє зберігати колекцію елементів одного типу (в даному випадку, цілих чисел). • Ітератор — об’єкт, який дозволяє послідовно обходити елементи колекції (масиву) без безпосереднього доступу до індексів. • Засоби доступу — методи для отримання та зміни елементів масиву, що забезпечують абстракцію для операцій над масивом.

  2. Клас масиву

У моїй частині проекту я створив клас MyArray, який представляє масив цілих чисел. Ось основні моменти: • Масив ініціалізується через конструктор, де вказується його розмір. • Створений метод getArr() для доступу до внутрішнього масиву. • Всі елементи масиву інкапсульовані, щоб забезпечити правильне використання цього масиву через інтерфейси.
4. Засоби доступу

Засоби доступу до масиву включають методи для отримання елементів за індексом, а також можливість заповнювати масив вручну або за допомогою генерації випадкових чисел. • Метод доступу: для отримання значення елементів масиву. • Метод для заповнення вручну: щоб користувач міг самостійно ввести значення в масив. • Метод для випадкової генерації значень: для тестування алгоритмів з випадковими даними.

  1. Клас ітератора

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

Клас програми та засоби визначення ефективності - розробник 2

Як розробник 2, я відповідаю за створення класу програми та засобів визначення ефективності алгоритмів сортування. Мій внесок у проект включає:

• Розробка класу для запуску та тестування алгоритмів сортування. • Реалізація методів для вимірювання часу виконання, кількості порівнянь та кількості перестановок. • Спілкування з користувачем для отримання необхідних даних.

Основні поняття

• Клас програми — клас, який відповідає за запуск алгоритмів сортування та збір даних про їх ефективність. • Засоби визначення ефективності — методи для вимірювання часу виконання, кількості порівнянь та кількості перестановок під час сортування. • Спілкування з користувачем — процес отримання даних від користувача для налаштування параметрів сортування.

Клас програми

У моїй частині проекту я створила клас SortTester, який відповідає за запуск алгоритмів сортування та збір даних про їх ефективність.

Ось основні моменти:

• Клас містить методи для запуску кожного алгоритму сортування. • Реалізовані методи для вимірювання часу виконання, кількості порівнянь та кількості перестановок. • Дані про ефективність алгоритмів зберігаються та виводяться для порівняння. • Додані методи для спілкування з користувачем, щоб отримати необхідні дані.

Засоби визначення ефективності

Засоби визначення ефективності включають методи для вимірювання часу виконання, кількості порівнянь та кількості перестановок під час сортування:

• Метод вимірювання часу виконання: використовується для визначення часу, необхідного для сортування масиву. • Метод підрахунку порівнянь: використовується для підрахунку кількості порівнянь елементів масиву під час сортування. • Метод підрахунку перестановок: використовується для підрахунку кількості перестановок елементів масиву під час сортування.

Спілкування з користувачем

Для налаштування параметрів сортування необхідно отримати дані від користувача. У програмі реалізовані наступні питання:

• А як ви хочете задати значення елементів?- користувач може вибрати між ручним введенням значень або генерацією випадкових чисел. • А який алгоритм ви хочете обрати?- користувач може вибрати один з доступних алгоритмів сортування для тестування.

Реалізація

  1. Клас SortTester містить методи для запуску алгоритмів сортування та збору даних про їх ефективність.
  2. Метод runBubbleSort() запускає метод бульбашкового сортування та вимірює його ефективність.
  3. Метод runInsertionSort() запускає метод сортування вставками та вимірює його ефективність.
  4. Дані про ефективність алгоритмів зберігаються у відповідних змінних та виводяться для порівняння.
  5. Реалізовані методи для спілкування з користувачем, щоб отримати необхідні дані для налаштування параметрів сортування.

Алгоритми сортування (розробники 3-5):

  • Реалізація вказаних методів сортування.
  • Оптимізація алгоритмів для покращення продуктивності.