1: Двоичная куча
2: Двоичная куча – пирамида (binary heap)
3: История появления Бинарная куча была Джоном Уильямом Джозефом Уильямсом в 1964 году как структура данных для heapsort(пирамидальной сортровки). Но наибольшего применения достигла лишь в 1990-х годах, в эпоху повсеместного использования компьютеров. В том числе двоичную кучу существенно популяризировал Чарльз Лейзерсон, который также использовал её в разработке собственного языка программирования Clik.
4: Двоичная куча Приоритет в любой вершине не меньше, чем приоритет её потомков Глубина всех листьев (расстояние до корня) отличается не более чем на 1 слой. Последний слой заполняется слева направо без «дырок».
5: Бинарная куча – пирамида (binary heap)
6: Реализация бинарной кучи на основе массива
7: Реализация бинарной кучи на основе массива
8: Поиск максимального элемента
9: Вставка элемента в бинарную кучу
10: Вставка элемента в бинарную кучу
11: Поиск максимального элемента
12: Удаление максимального элемента
13: Удаление максимального элемента
14: Удаление максимального элемента
15: Создание пустой кучи
16: Удаление кучи
17: Восстановление свойств кучи (max-heap)
18: Работа с бинарной кучей
19: Изменение кучи
20: Увеличение ключа
21: Построение бинарной кучи
22: Построение бинарной кучи (v1)
23: Построение бинарной кучи (v2)
24: Использование двоичной кучи
25: Очередь с приоритетом (priority queue)
26: Сравнение оценки алгоритмов
27: Алгоритм Дейкстры Обозначим через n количество вершин, а через m — количество рёбер в графе G. В обычном простейшем случае получаем O(nn). С помощью двоичной кучи сложность алгоритма получается: О(log n (n m)). Так как время удаления вершины из станет log n при том, что время модификации тоже возрастёт до log n. Так как цикл выполняется порядка n раз, а количество релаксаций (смен меток) не больше m, О(log n (n m)).
28: Сортировка на базе бинарной кучи
29: Сортировка на базе бинарной кучи function HeapSort(v1:n) h CreateBinaryHeap(n) for i 1 to n do HeapInsert(h, vi, vi) end for for i 1 to n do vi HeapRemoveMax(h) end for end function
30: Сортировка на базе бинарной кучи function HeapSort(v1:n) h CreateBinaryHeap(n) for i 1 to n do HeapInsert(h, vi, vi) end for for i 1 to n do vi HeapRemoveMax(h) end for end function
31: Оценки работы алгоритма
32: Скорость работы программы
33: Скорость работы программы с выводом данных
34: Отношение
35: Отношение теоретического к практическому
36: Спасибо за внимание!