Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаТ Алгор2012.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
472.06 Кб
Скачать

1. Предмет та зміст дисципліни

Предметом навчальної дисципліни «Теорія алгоритмiв» є вивчення методів та засобів побудування ефективних алгоритмів.

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

Зміст дисципліни розкривають такі теми:

Складність алгоритмiв.

Структури даних.

Методи побудови ефективних алгоритмів.

Алгоритми сортування.

Алгоритми пошуку.

Алгоритми на графах.

2. Структури даних.

2.1 Динамічні структури даних.

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

int* pAge;

float* pBall;

Слід зазначити, що більш переважно оголошувати покажчик з одночасним присвоєнням йому значення 0 або null – нульове значення покажчика, тобто:

int* pAge = 0;

float* pBal = 0;

Після того, як покажчик придбав деяке значення, тобто став указувати на конкретний фізичний байт пам'яті, по цій адресі можна розмістити будь-яке значення відповідного типу. Для цього перед покажчиком ставиться значок *, який вже має інше призначення, а саме косвенну адресацію, наприклад:

*pAge=18; //в область пам'яті pAge поміщене значення 18

*pBall=4.25; //в область пам'яті pBall поміщене значення 4.25

Для розглянутих дотепер типів даних виділявся цілком визначений розмір пам'яті. Наприклад, під змінну цілого типу int – 2 байти, дійсного типу float – 4 байти, логічного типу bool – 1 байт. Такі змінні називаються статичними і розташовуються в сегменті даних (або статична пам’ять).

Однак, об’єм статичної пам'яті для розміщення таких змінних обмежений і тому при обробці великих масивів даних можуть виникнути ускладнення. В таких випадках існує можливість створювати і знищувати змінні в будь-який момент роботи програми в області пам’яті, що називається вільною або динамічною. Такі змінні називаються динамічними. Змінні, які розташовуються динамічно, оголошуються за допомогою оператора new як покажчик на дані визначеного типу, наприклад:

int* pAge = new int;;

float* pBall = new float;

Динамічну пам'ять можна звільняти оператором delete, наприклад:

delete pAge;

delete pBall;

До динамічних структур даних належать:

лінійні зв'язані структури: списки, черги, стеки;

нелінійні структури: графи,дерева.

Ці структури є фундаментальними в програмуванні.

У лінійно зв'язаних структурах:

  1. всі елементи зв'язані між собою в ланцюг за допомогою покажчиків;

  2. пам'ять для елементів виділяється і звільняється динамічно;

  3. послідовність елементів має початок ланцюга і кінець (вершину), що адресує покажчик стека, черги або списку.

Елементами лінійно зв'язаних структур є структури (struct), що містять інформаційне поле та одне чи кілька полів з адресами наступного (попереднього) елементів. Таким чином, елемент містить покажчик на інший елемент.

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

Схема взаємодії елементів у ланцюзі зв'язаних структур

К інець ланцюга (0 або null) (вершина) Початок

ланцюга

Стек: включення і виключення

елементів тільки тут; це – вершина стеку.

Черга: включення - тут; виключення – тут.

Список: включення і виключення елементів у

будь-якому місці ланцюга.