Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-14_bez_10_ta_11.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
89.52 Кб
Скачать

5) Сортування методом обміну

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

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

Візьмемо масив чисел "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 ) Нарешті, масив відсортовано, і алгоритм може припинити свою роботу.

function bubblesort (A : list[1..n]) {

var int i, j;

for i from n downto 1 {

for j from 1 to i-1 {

if (A[j] > A[j+1])

swap(A[j], A[j+1]) }}}

6) Метод сортування масивів вибором та його покращенні методи

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

С++

#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;

}}

7.Лінійні списки. Зв’язане зберігання лінійних списків. Двозв’язний список. Реалізація операцій над зв’язаними списками.

Лінійні списки

Лінійний список – це набір даних одного типу. Можна зберігати послідовно або зв’язано.

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

<тип даних> <назва масиву> [<розмірність>] ;

Const i=100;

Int massiv [i] ;

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

Const або #define .

Для вводу послідовного списку зручно використовувати цикл із лічильником.

for (int k=0; k<i; k++)

{cout <<”виводимо значення масиву”;

cin>> massiv [k];

}

Зв’язане зберігання лінійних списків

Зв'язаний список -  одна з найважливіших структур даних, в якій елементи лінійно впорядковані, але порядок визначається не номерами елементів, а вказівниками, які входять в склад елементів списку та вказують на наступний за даним елемент (в однозв'язаних або однобічно зв'язаних списках) або на наступний та попередній елементи (в двозв'язаних або двобічно зв'язаних списках). Список має «голову» — перший елемент та «хвіст» — останній елемент.

У зв’язаному лінійному списку кожний елемент крім значення містить і адресу наступного елементу. Для створення зв’язного списку використовують інтерактивний режим і для кожного елементу перед вводом значення виділяється комірка пам’яті.

new ( ) – функція яка повертає адресу комірки виділеної пам’яті.

Для створення зв’язного списку треба виявити тип елементу цього списку

Typedes struct list{int val;

Struct list *next;

};

Переваги зв’язаного зберігання:

1)використання рівно стільки комірок пам’яті скільки потрібно.

2)Зручно виконувати операції додавання і вилучення операції (змінюються тільки зв’язки).

Недоліки:

Немає вільного доступу до будь-якого елементу списку.

Двозв’язний список

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

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

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

Операції з двозв’язним списком аналогіні із операціями однозв’язним списком: створення,додавання,вилучення.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]