
- •Затверджено на засіданні
- •Редактор л.М. Тонкошкур
- •1. Предмет та зміст дисципліни
- •2. Структури даних.
- •2.1 Динамічні структури даних.
- •2.2. Стеки
- •Блок-схема функції push додавання до стеку нового елемента
- •Блок-схема функції pop видалення останнього елемента стеку
- •Варіанти індивідуальних завдань
- •2.3. Списки.
- •Блок-схема програми
- •Варіанти індивідуальних завдань
- •2.4. Черги.
- •Блок-схема програми
- •Варіанти індивідуальних завдань
- •2.5. Дерева.
- •Варіанти індивідуальних завдань
- •4.Алгоритми сортування
- •Варіанти індивідуальних завдань
- •5.Алгоритми пошуку.
- •Лінійний пошук - це пошук підряд в неупорядкованій послідовності.
- •Варіанти індивідуальних завдань
- •6.Алгоритми на графах.
- •Варіанти індивідуальних завдань
- •Список літератури
5.Алгоритми пошуку.
Однією з основних задач нечислової обробки даних є задача пошуку. Так як звичайно об'єкт (елемент) має декілька властивостей, то пошук здійснюється по ключу, наприклад:
struct item
{
int key;
//інформаційнi поля
};
Лінійний пошук - це пошук підряд в неупорядкованій послідовності.
Двійковий пошук - це пошук в упорядкованій послідовності. Структурой даних, яка дозволяє виконати двійковий пошук є дерево двійкового пошуку (тема «Структури даних»).
Метод розміщення (хешування):
Функція розміщення h (хеш-функція) відображає елементи універсальної множини S в множину A цілих чисел від 0 до m-1. Компонентами масива А (таблиця розміщення або хеш-таблиця), розміром m служать покажчики на списки елементів множини S. Список, на який указує А[i] складається з усіх тих елементів а з множини S, для яких h(a)=i.
Таблиця розміщення (хеш-таблиця):
Список
для h(a)=0
0 |
Список для h(a)=1 |
2 |
. |
. |
. |
Список
для+h(a)=m-1 |
.
.
Таким чином масив А – це таблиця розміщення (хешування)
Приклад.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значение 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що вставляються ланцюжки:
KEY, STRUCT, RECORD, OBJECT.
Алгоритм:
В якості хеш-функції візьмемо: h(a)=a mod m, де m=5.
ЛАТИНСЬКИЙ АЛФАВІТ:
1 - A, 2 - B, 3 - C, 4 - D, 5 - E, 6 - F, 7 - G, 8 - H, 9 - I, 10 - J, 11 - K, 12 - L, 13 - M, 14 - N, 15 - O, 16 - P, 17 - Q, 18 - R, 19 - S, 20 - T, 21 - U, 22 - V, 23 - W, 24 - X, 25 - Y, 26 - Z.
Тоді:
KEY=11+5+25=41 : h=41 mod 5=1;
STRUCT=19+20+18+21+3+20=83 : h=83 mod 5=3;
RECORD=18+5+3+15+18+4=63: h=63 mod 5=3;
OBJECT=15+2+10+5+3+20=55: h=55 mod 5=0;
Таблиця розмішення (хешування)
OBJECT
|
KEY
|
Порожній список
|
STRUCT
RECORD
|
Варіанти індивідуальних завдань
Розробити програму побудови двійкового дерева, ключем в якому служить назва лікарського засобу, а інфоpмаційна частина - величина дійсного типу, яка містить вартість лікарського засобу в гривнях. Написати функцію, здійснюючу пошук лікарського засобу за назвою.
Розробити програму побудови двійкового дерева, ключем в якому служить інвентарний номер книги, а інфоpмаційна частина - величина рядкового типу, яка містить назву книги. Написати функцію, здійснюючу пошук по ключу.
Розробити програму побудови двійкового дерева, ключем в якому служить шифр книги в бібліотеці, а інфоpмаційна частина містить прізвище автора та назву книги. Написати процедуру, здійснюючу пошук прізвища автора книги в двійковому деpеві.
Розробити програму побудови двійкового дерева, ключем в якому служить назва кафедри, а інфоpмаційна частина - величина типу string[10], яка містить прізвище завідуючого. Написати функцію пошуку по ключу в двійковому деpеві.
Розробити програму побудови двійкового дерева, вузол якого містить в якості ключа номер рейсу літака, а в якості інформаційного поля запис:
місце призначення ;
ціна квитка. Написати поцедуpу пошуку в двійковому деpеві відомостей про літак по ключу.
Розробити програму побудови двійкового дерева, вузол якого містить в якості ключа номер палати в лікарні, а в якості інформаційного поля масив прізвищ та ім’я по батькові хворих. Написати функцію пошуку по ключу в двійковому деpеві.
Розробити програму побудови двійкового дерева, вузол якого містить в якості ключа персональний код співробітника в відділі кадрів підприємства, а в якості інформаційного поля запис:
прізвище та ім’я по батькові співробітника;
посада;
розмір окладу.
Написати функцію пошуку прізвища співробітника в двійковому дереві.
Розробити програму побудови двійкового дерева, ключем в якому служить назва дисципліни, а інфоpмаційна частина – кількість годин, запланованих для цієї дисципліни. Написати функцію, здійснюючу пошук по ключу.
Розробити програму побудови двійкового дерева, ключем в якому служить номер студентської групи, а інфоpмаційна частина - величина рядкового типу, яка містить шифр спеціальності. Написати функцію, здійснюючу пошук по ключу.
Розробити програму побудови двійкового дерева, ключем в якому служить назва номер автомобіля, а інфоpмаційна частина – прізвище власника. Написати функцію, здійснюючу пошук по ключу.
Розробити програму побудови двійкового дерева, ключем в якому служить прізвище спортсмена, а інфоpмаційна частина – кількість отриманих медалей. Написати функцію, здійснюючу пошук по ключу.
Розробити програму побудови двійкового дерева, ключем в якому служить модель ноутбука, а інфоpмаційна частина – його вартість в гривнях. Написати функцію, здійснюючу пошук по ключу.
Розробити програму побудови двійкового дерева, ключем в якому служить номер маршрутного таксі, а інфоpмаційна частина – початкова і кінцева зупинки. Написати функцію, здійснюючу пошук по ключу.
Розробити програму побудови двійкового дерева, ключем в якому служить номер паспорту, а інфоpмаційна частина – прізвище його власника. Написати функцію, здійснюючу пошук по ключу.
Розробити програму побудови двійкового дерева, ключем в якому служить прізвище співробітника, а інфоpмаційна частина – його адреса. Написати функцію, здійснюючу пошук по ключу.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
ДАНІ, СТРУКТУРА, ДЕРЕВО, ГРАФ, СТЕК, СПИСОК, ЧЕРГА.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
АЛГОРИТМ, ЕФЕКТИВНІСТЬ, СКЛАДНІСТЬ, МОДЕЛЬ, МАШИНА, РЕГИСТР.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
СОРТУВАННЯ, ШВИДКЕ, ДЕРЕВО, ШЕЛЛА, ЗЛИТТЯМ, ПУХИРЦЕМ, ВКЛЮЧЕННЯМ.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
ПОШУК, СОРТУВАННЯ, ДАНІ, МЕТОДИ, РЕКУРСІЯ, ЦИКЛ.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
BREAK, CONTINUE, EXIT, HALT, FILE, ARRAY, RECORD.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
UNIX, LINUX, WINDOWS, DOS, APPLE, MACINTOSH.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
USES, TYPE, VAR, CONST, RPOCEDURE, FUNCTION.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
PASCAL, C, ASSEMBLER, DELPHI, JUVA, FORTRAN.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
BEGIN, END, READ, WRITE, IF, THEN, ELSE.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
FOR, TO, DOWN, DO, WHILE, REPEAT, UNTIL.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
BASIC, VISUAL, PHOTO, DOS, VIDEO, MULTI.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
ACTION, SCRIPT, FLASH, BOX, CLIP, MOVIE.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
JAVA, SCRIPT, CANVAS, PIXEL, MODEL, RGB.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
AUDIO, VIDEO, FOTO, PICTURE, SONG, WORLD, HELLO.
Нехай елементами являються ланцюжки з букв і використовується наступна функція розміщення (хеш-функція) для таблиці розміру m=5:
скласти «значення» букв, де A має значення 1, B - значення 2 і т.д.;
розділити результат на 5 і узяти залишок.
Вивести уміст таблиці розміщення і списків, при умові, що уставляються ланцюжки:
UKRAINE, RUSSIA, FRANCE, GERMANY, GB, USA.