- •Алгоритм. Свойства алгоритма
- •Понятие сложности алгоритма
- •Классы сложности алгоритмов
- •Структуры данных. Массив.
- •Структуры данных. Связный список
- •Структуры данных. Хеш-таблицы. Рехеширование
- •Структуры данных. Хеш-таблицы. Метод цепочек
- •Алгоритмы сортировки. Шелла
- •Алгоритмы сортировки. Турнирная
- •Алгоритмы сортировки. Пирамидальная
- •Алгоритмы сортировки. Быстрая
- •Методы поиска. Бинарный
- •Методы поиска. Бинарное дерево
- •Методы поиска. Фибоначчиев
- •Методы поиска. Интерполяционный поиск
- •Методы поиска в строке. Алгоритм Кнута-Морриса-Пратта (кмп)
- •Методы поиска в строке. Бойера-Мура
- •Понятие фрактала.
- •Фрактальная размерность
- •Итеративные алгоритмы
- •Жадные алгоритмы
- •Поиск в ширину
- •Поиск в глубину
- •Остовное дерево. Минимальное остовное дерево. Алгоритм Прима
- •Остовное дерево. Минимальное остовное дерево. Алгоритм Краскала
- •Алгоритмы поиска путей. Флойда-Уоршелла
- •Алгоритмы поиска путей. Форда-Фалкерсона
- •Алгоритмы поиска путей. Дейкстры
- •Алгоритмы поиска путей. Беллмана-Форда
- •Алгоритмы поиска путей. Волновой(Ли)
- •Алгоритмы поиска путей. Лучевой
- •Алгоритмы поиска путей. A*
Алгоритмы сортировки. Шелла
Берем количество элементов пополам и от получившегося числа d берем целую часть. Далее сравниваем числа по этому шагу и меняем местами если это необходимо. После этого снова делим d на пополам и снова сравниваем числа по этому шагу. Так пока d не станет 1. Далее идет обычная пузырьковая сортировка.
Алгоритмы сортировки. Турнирная
Элементы делятся попарно. Далее все меньшие элементы “выигрывают” у больших, пока “турнир” не дойдет до “финала”. Найденный наименьший элемент меняется на бесконечность и записываем его первым в массив. Повторяем до тех пор пока элементов не останется. Невыгодна по памяти.
Сложность:O(n(log(n))
Алгоритмы сортировки. Пирамидальная
Мы располагаем элементы в форме пирамиды исходя из их индексов. Соседи каждого элемента высчитываются по формулам 2*i + 1 и 2*i + 2. Далее начинаем сравнивать элементы в пирамиде слева направо снизу вверх. Надо, чтобы самый большой элемент ушел наверх пирамиды.Далее мы меняем его местами с элементом, у которого самый большой индекс и больше его не трогаем. Повторяем алгоритм до тех пор, пока все элементы не будут как бы “заморожены”.
Сложность:O(n(log(n))
Алгоритмы сортировки. Быстрая
Берется опорный элемент посередине. Затем все элементы, что меньше опорного переносятся в левый конец, а все, что больше в правый. Затем выбираем два опорных элемента слева и справа предыдущего опорного. И далее повторяем алгоритм пока всё не отсортируется
Сложность:O(n(log(n))
Методы поиска. Бинарный
https://www.youtube.com/watch?v=y7fSfnOkCTg&t=296s - ссылка на лекцию
Подразумевает отсортированный массив на вход
Сначала находим серединный индекс и сравниваем с ним искомый элемент
Смотрим, в какую половину попал искомый элемент, и снова делим ее пополам
Повторяем эту операцию до тех пор, пока не найдем искомый элемент, или пока не останется того, что можно поделить
Методы поиска. Бинарное дерево
Может быть как отсортированным, так и нет
Мы сортируем дерево, начиная с первого элемента. Влево закидываем меньшие значения вправо большие.
Когда нам попадает элемент на поиск, мы так же смотрим, больше оно или меньше первого значения. Спускаемся по дереву
Чтобы дерево вышло сбалансированным, ща корневой элемент можно взять средний. За следующие элементы квартили и т.д. (Хорошо применяется к упорядоченным массивам)
Красно черное дерево. Всавка осуществляется как в бинарном дереве, каждоая новая строчка (уровень) значений имеет цвет, отличный от верхней строчки (конечное значение), но дерево перестраивается так, чтобы от первого до крайнего элемента всегда было ровное кол-во черных элементов
Методы поиска. Фибоначчиев
Сравниваем элементы, по индексам равным элементам ряда фибоначчи (следующий равен сумме двух предыдущих)
Пронумеровываем элементы
Сравниваем искомое число с элементами массива, используя шаг в виде чисел фибоначчи
Когда находим, между какими элементами находится искомое число, то начинаем поиск в промежутке, тоже с шагов чисел фибоначчи