
- •Обчислення часу виконання програми. Правила.
- •Правила аналізу часу виконання алгоритмів.
- •Реалізація атд “Список” при допомозі масивів
- •Реалізація атд “Черга” при допомозі циклічного массиву
- •Оператори для роботи із атд “Множина”. Моделі представлення.
- •Insert(X, a) – робить х елементом множини а. Або іншими словами аè{X}.
- •Реалізація атд “Множина” при допомозі двійкових векторів
- •Реалізація атд “Множина” при допомозі зв’язаних списків
- •Атд “Словник”. Реалізація словників
- •Хешування та хеш-таблиці
- •Тип даних “Дерево”. Основні означення. Обхід дерева в симетричномупорядку
- •Тип даних “Дерево”. Основні означення. Обхід дерева в зворотному орядку
- •Реалізація атд “Дерево” при дпомозі списків синів
- •Функція знаходження опорного елементу та функція перестановки елементів для методу швидкого сортування
- •Пірамідальне сортування.
- •Пошук із використання індексації по ключах
- •Послідовний метод пошуку
- •Метод бінарного пошуку
Реалізація атд “Черга” при допомозі циклічного массиву
Для вставки нового елементу в чергу необхідно перемістити вказівник Q.rear на одну позицію за годинниковою стрілкою і записати елемент в цю позицію.
При видаленні елементу з черги достатньо просто перемістити вказівник Q.front за годинниковою стрілкою.
function addone (int i) // додавання одиниці до позицій i
return (i mod maxlenght) + 1; // в циклічному сенсі
function MAKENULL (QUEUE Q)
Q.front = 1;
Q.rear = maxleght;
function EMPTY (QUEUE Q)
if addone(Q.rear) == Q.front
then return true;
else return false;
function FRONT (QUEUE Q) {
if EMPTY (Q)
then error (“Черга пуста”);
else Q.elements[Q.front] }
function ENQUEUE (elementtype x, QUEUE Q)
if addone(addone(Q.rear)) == Q.front
then error (“Черга повна”);
else
Q.rear = addone (Q.rear)
Q.elements[Q.rear] = x;
function DEQUEUE (QUEUE Q) {
if EMPTY(Q)
then error (“Черга пуста”);
else Q.front = addone(Q.front);
Тип даних “Відображення”. Оператори для роботи із АТД “Відображення”
Відображення – це функція, яка визначена на деякій множині елементів одного типу і яка приймає значення із множини елементів іншого типу.
MAKENULL (M) – робить відображення порожнім.
ASSIGN (M, d, r) – робить M(d) рівним r незалежно від того, як M(d) було визначено до цього
COMPUTE(M, d, r) – повертає значення true і присвоює змінній r значення M(d), якщо відображення M(d) є визначеним і повертає false в противному випадку.
Реалізація АТД “Відображення” при допомозі массиву
domaintype lastvalue = const
domaintype firstvalue = const
struct MAPPING
rangetype elem[lastvalue]
function MAKENULL (MAPPING M)
domaintype i;
for i from firstvalue to lastvalue do
M.elem = невизначений;
function ASSIGN (MAPPING M, domaintype d, rangetype r) {
M.elem[d] = r; }
function COMPUTE (MAPPING M, domaintype d, rangetype r) {
if M.elem[d] == невизначений)
then return false;
else
r = M.elem[d];
return true
Реалізація АТД “Відображення” при допомозі списків
function ASSING (MAPPING M, domaintype d, rangetype r)
elementtype x
position p
x.domain = d;
x.range = r;
p = FIRST(M)
while p ≠ END(M) do
if RETRIEVE (p, M).domain == d
then DELETE(p, M);
else p = NEXT(p, M);
INSERT (x, FIRST(M), M);
function COMPUTE (MAPPING M, domaintype d, rangetype r)
position p
p = FIRST (M)
while p ≠ END(M)
if RETRIEVE (p, M).domain == d
then
r = RETRIEVE(p,M).range
return true
p = NEXT(p, M);
return false
Тип даних “Множина”. Основні дії над множинами
Множиною називається деяка сукупність елементів, кожен елемент якої або сам є множиною або є примітивним елементом, який має назву - атом. Припускається, що всі елементи множини є різними, тобто в будь-якій множині немає двох копій одного і того самого елементу.
Об’єднанням множин А і В (АÈВ) називається множина, яка складається із елементів, що належать хоча б одній із множин А чи В.
Перетином множин А і В (АÇВ) називається множина, яка складається із елементів, що належать і до множини А і до множини В.
Різницею множин А і В (А\В) називається множина, яка складається із елементів, що належать множині А, але не належать множині В.