Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Тема- Реалізація алгоритмів сортування масивів.html

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.11.2024

Дисципліна

Відділення

Спеціальність

Група

Інформатика

Радіотехнічне

5.05090101

221-222

Викладач Аністратенко Т.В.

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

Тема: Реалізація алгоритмів сортування масивів.

Мета: отримати практичні навички складання та відладки програм сортування масивів

Обладнання: Borland C++

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

Сортування обміном або сортування бульбашкою є простим алгоритмом сортування. Алгоритм працює таким чином — у поданому наборі даних (списку чи масиві) порівнюються два сусідні елементи. Якщо один з елементів, не відповідає критерію сортування (є більшим, або ж, навпаки, меншим за свого сусіда), то ці два елементи міняються місцями. Прохід по списку продовжується до тих пір, доки дані не будуть відсортованими. Алгоритм отримав свою назву від того, що процес сортування за ним нагадує поведінку бульбашок повітря у резервуарі з водою. Оскільки для роботи з елементами масиву він використовує лише порівняння, це сортування на основі порівнянь.

Кролики і черепахи

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

З метою підвищення швидкодії алгоритму, у свій час було здійснено чимало зусиль для зменшення кількості "черепах". Сортування перемішуванням є порівняно не поганим, однак, усе ще у своєму найгіршому випадку має складність O(n2)Сортування гребінцем спершу порівнює великі елементи один з одним, а вже тоді поступово переходить до все менших і менших. Його середньостатистична швидкість приблизно рівна такій в алгоритмі Швидке сортування.

Приклад реалізації крок за кроком

Візьмемо масив чисел "5 1 4 2 8", і за допомогою даного алгоритму, відсортуємо його від найменшого до найбільшого елементу. На кожному кроці, елементи, виділеніжирним шрифтом будуть порівнюватись.

Перший прохід:

5 1 4 2 8 )  ( 1 5 4 2 8 ) Тут, алгоритм порівнює перші два елементи, і міняє їх місцями.

( 1 5 4 2 8 )  ( 1 4 5 2 8 )

( 1 4 5 2 8 )  ( 1 4 2 5 8 )

( 1 4 2 5 8 )  ( 1 4 2 5 8 ) Тут порівнювані елементи знаходяться на своїх місцях, тож алгоритм не міняє їх місцями.

Другий прохід:

1 4 2 5 8 )  ( 1 4 2 5 8 )

( 1 4 2 5 8 )  ( 1 2 4 5 8 )

( 1 2 4 5 8 )  ( 1 2 4 5 8 )

( 1 2 4 5 8 )  ( 1 2 4 5 8 )

Тепер наш масив повністю відсортований, однак, алгоритм цього ще не знає. Йому потрібен ще один "пустий" прохід, під час якого він не поміняє місцями жодного елементу.

Третій прохід:
1 2 4 5 8 )  ( 1 2 4 5 8 )
( 1 
2 4 5 8 )  ( 1 2 4 5 8 )
( 1 2 
4 5 8 )  ( 1 2 4 5 8 )
( 1 2 4 
5 8 )  ( 1 2 4 5 8 )
Нарешті, масив відсортовано, і алгоритм може припинити свою роботу.

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

Алгоритм працює таким чином:

  1.  Знаходить у списку найменше значення
  2.  Міняє його місцями із першим значеннями у списку
  3.  Повторює два попередніх кроки, доки список не завершиться (починаючи з другої позиції)

Фактично, таким чином ми поділили список на дві частини: перша (ліва) — повністю відсортована, а друга (права) — ні.

Ось приклад сортування масиву з п'яти елементів за даним алгоритмом:

64 25 12 22 11

11 25 12 22 64

11 12 25 22 64

11 12 22 25 64

Реалізація алгоритма

#include <algorithm> // for: std::iter_swap, std::min_element

 

template <typename Iterator>

void selection_sort(Iterator begin, Iterator end)

{

   Iterator min;

   while (begin != end)

   {

       min = std::min_element(begin, end);

       std::iter_swap(begin, min);

       ++begin;

   }

}

Завдання для підготовки до іспиту

  1.  Відсортувати за зростанням масив 10 цілих чисел методом вибору.
  2.  Відсортувати лінійний масив з 20 дійсних чисел методом включення.

Звіт повинен містити:

тему, мету, обладнання, текст програми та результати виконання, відповіді на контрольні запитання (хід роботи не друкуємо!!!).

Контрольні запитання.

1. Які методи сортування масивів ви знаєте?

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




1. го тыс. до н. э.; ШумероАккадское царство вторая пол
2. Ордынский дефорт
3. Контрольная работа- Інноваційний менеджмент та формування маркетингової стратегії
4. Саратовская государственная юридическая академия 1
5. а очной формы обучения бюджетной основы имеющим социальные льготы сроком на 1 семестр
6. Ле Корбюзье
7. щее и анальгезии рующее средство Возможны аллергические реакции
8. Булева алгебра
9. Связь комбинаторики с различными разделами математики
10. э по 6 в нэ Условными временными границами этого периода принято считать 585 до н
11. Sentence pttern ' pst progressive I WSING
12. Воздействие промышленности Пермской области на окружающую среду
13. по теме- Глобальные проблемы современности Подготовил- доктор философских наук профессор
14. Уголовное право
15. Бизнес-план как модель инвестиционного проекта
16. Черкизово
17. XXI веке. Международная трудовая миграция ~ это перемещение из одной страны в другую рабочей силы П
18. е годы Э Фромм провозгласил себя сторонником радикального гуманизма как теоретической концепции личности и
19. Моя умма разделиться на семьдесят три ветви
20. Развитие древнерусских городов в IX’XIII вв