
- •Структура данных и ее классификация.
- •«Дерево», его классификация, примеры, способы перемещения
- •«Хэш-таблицы»
- •Способы реализации «хэш-функций»
- •Разрешение коллизий
- •Алгоритмы и свойства
- •Рекурсия
- •«Разделяй и властвуй», «Ханойские башни»
- •Динамическое прогриммирование
- •Сортировка
- •Выбор, вставка, пузырьки и Шелла
- •По указателях и индексам, распределяющего подсчета
- •Быстрая сортировка
- •Слияния
- •Очередь по преоритету
- •Пирамидальная сортировка
- •Порязрядная сортировка
- •Алгоритм поиска
- •Суть последовательно, бинарного и интерполяционнного поиска
Способы реализации «хэш-функций»
Метод ділення(кількість ключів ділиться на кількість елементів і береться залтшок)
Метод множення (кількість ключів множиться на кількість елементів)
Універсальний метод(вибирає який способ використовувати)
Разрешение коллизий
Існує декілька способів вирішення колізій:
Пряма адресація: в масиві зберігаються списки пар. Колізії просто призводять до того, що з'являються списки довжиною більше одного елемента.
Відкрита адресація
А) ідеальне хешування(інтервал між комірками з кожним кроком збільшується на константу)
Б) лінійне хешування(комірки хеш-таблиці послідовно переглядаються з деяким фіксованим інтервалом k між комірками)
В) подвійне хешування(інтервал між комірками фіксований, як при лінійному переборі, але, на відміну від нього, розмір інтервалу обчислюється другою, допоміжною хеш-функцією, тобто може бути різним для різним ключів)
Алгоритмы и свойства
Алгори́тм — точний набір інструкцій, що описують послідовність дій для виконання певного завдання,
Властивостіа:
Скінченність(алгоритм має завжди завершуватись після виконання скінченної кількості кроків)
Визначеність(кожен крок алгоритму має бути точно визначений)
Вхідні дані(алгоритм має деяку кількість (можливо, нульову) вхідних даних)
Вихідні дані(алгоритм має одне або декілька вихідних даних)
Ефективність(Алгоритм вважають ефективним, якщо всі його оператори досить прості для того, аби їх можна було точно виконати за скінченний проміжок часу з допомогою олівця та аркушу паперу)
Масовість(властивість алгоритму, яка полягає в тому, що алгоритм повинен забезпечувати розв`язання будь-якої задачі з класу однотипних задач)
Рекурсия
Реку́рсія — часткове визначення об'єкта через себе. Рекурсія використовується, коли можна виділити самоподібність задачі.
Рекурсивний алгоритм – алгоритм, який вирішує задачу шляхом вирішення декількох вузьких варіантів цієї ж задачі.
Рекурсивна функция – це функція, яка викликає сама себе.
Особливості рекурсивної функції
вона не може викликати себе до безкінечності, тобто повинна мати скінченну кількість викликів;
вона завжди повинна мати умову завершення;
кожен наступний виклик відбувається із зменшенням параметрів функції
Приклади
Алгоритм Жордана—Гаусса для решения Системы линейных алгебраических уравнений является рекурсивным.
Факториал целого неотрицательного числа n обозначается n! и определяется как
при n > 0 и n! = 1 при n = 0
Числа Фибоначчи определяются с помощью рекуррентного соотношения:
Первое и второе числа Фибоначчи равны 1
Для n > 2, n − e число Фибоначчи равно сумме (n − 1)-го и (n − 2)-го чисел Фибоначчи
Практически все геометрические фракталы задаются в форме бесконечной рекурсии. (например, треугольник Серпинского).
Задача «Ханойские башни».
«Разделяй и властвуй», «Ханойские башни»
Задача разбивается на подзадачи (деление осуществляется до некоторой неделимою составляющих) и решение отыскивается в каждой подзадаче.
Int max (int mas[],int l int r){
If (l==r) return mas [];
Int (l+r)/2;
Int r = max (mas, l,m) l
Int v= max (mas, m +l, r);
If (n>v) return n;
Else return v;
}
Задача «Ханойские башни». Её содержательная постановка такова:
В одном из буддийских монастырей монахи уже тысячу лет занимаются перекладыванием колец. Они располагают тремя пирамидами, на которых надеты кольца разных размеров. В начальном состоянии 64 кольца были надеты на первую пирамиду и упорядочены по размеру. Монахи должны переложить все кольца с первой пирамиды на вторую, выполняя единственное условие — кольцо нельзя положить на кольцо меньшего размера. При перекладывании можно использовать все три пирамиды. Монахи перекладывают одно кольцо за одну секунду. Как только они закончат свою работу, наступит конец света.
Рекурсивный вариант решения задачи можно описать так:
Алгоритм по передвижению башни, алгоритм передвинет нужное количество дисков из пирамиды «источник» на пирамиду «задание» используя «запасную» пирамиду.
Если число дисков равно одному, тогда:
Передвиньте диск из источника в задание
В противном случае:
Рекурсивно передвиньте все диски кроме одного из источника в запас, используя задание как запас
Передвиньте оставшийся диск из источника в задание
Передвиньте все диски из запаса в задание используя источник как запас