Использование структур данных является жизненно важным в области компьютерного программирования, особенно когда речь идет о хранении, управлении, организации данных быстро и эффективно. Каждый разработчик должен тщательно изучить структуру данных, поскольку это может значительно улучшить его навыки. Реализация минимальной и максимальной кучи является важной частью структуры данных, и каждый должен изучить ее.
Понимание того, что такое куча
Heap, по своей сути, является продвинутой древовидной структурой данных, которую программисты в основном используют для реализации и сортировки очередей. Кучи представляют собой двоичные деревья, и вот их основные характеристики:
– Начальный уровень в кучах заполнен, исключение составляют узлы листьев.
– Все узлы имеют максимум 2 дочерних узла
– Каждый узел расположен в крайнем левом углу, что означает, что каждый ребенок находится слева от своего родителя.
Для того чтобы избежать дыр в массиве, в кучах используются двоичные деревья. Бинарные деревья – это деревья, в которых каждый узел имеет двух детей и каждый узел заполнен, а узлы листьев являются единственным исключением, поскольку они пусты. Кучи создаются по их свойству. Свойство по сути сравнивает родительские узлы с ключами их дочерних узлов.
Помните, что кучи не сортируются постоянно, и они следуют условию ключа, когда наименьший или наибольший элемент присутствует на корневом узле, в зависимости от того, является ли это Min или Max кучей.
Преимущества и недостатки куч
Преимущества
– Вы можете получить глобальный доступ к переменным
– Кучи очень удобны для нахождения наибольших и минимальных чисел
– Кучи, как правило, невероятно гибкие, и вы можете удалять или распределять их в любом порядке.
Недостатки
– Кучи требуют гораздо больше времени на выполнение по сравнению со стеками
– Время вычислений, требуемое кучами, обычно выше.
– Управление памятью может быть довольно сложным при использовании кучи памяти. Причина этого в том, что куча используется во всем мире.
Применение структур данных кучи
Кучи невероятно эффективны, когда речь идет о поиске максимального или минимального элемента в массивах. Они также полезны в алгоритмах выбора и статистики. Временная сложность использования кучи для получения максимального или минимального значения составляет O(1)O(1).
Программисты разрабатывают очереди приоритетов на основе структур кучи. Для вставки и удаления каждого элемента, расположенного в приоритетной очереди с максимальной эффективностью, требуется около O(log(n))O(log(n)).
Очереди приоритетов (реализованные на основе кучи) часто встречаются в таких алгоритмах, как:
– алгоритм heapsort
– алгоритм Дейкстры
– алгоритм Прима
Основные операции с кучами
Ниже перечислены основные операции, которые люди используют при работе со структурами данных кучи.
getMax(): Эта операция помогает вернуть максимальное значение в куче
size: Операция size используется для возврата размера кучи.
extract: Extract помогает вернуть значение элемента, а затем удалить его из кучи.
delete: Delete используется для удаления элементов из кучи
вставить: Эта команда добавляет элементы в кучу и сохраняет ее свойства.
heapify: Heapify переставляет элементы кучи для поддержания ее свойств.
Шаги для создания максимальной кучи
Каждый элемент, присутствующий в max heap, действует в соответствии со свойством max heap, что означает, что ключ родительского узла всегда больше ключа дочернего узла. Выполните следующие шаги, чтобы построить max heap правильным образом:
– Сформируйте новый узел в начальном корне скачка.
– Присвойте ему значение
– После присвоения значения сравните значения родительского и дочернего узлов.
– Если родительский узел ниже, чем дочерний, поменяйте узлы местами.
– Повторяйте этот шаг до тех пор, пока самый большой элемент не достигнет родительских узлов корня.
Вы также можете следовать этим шагам при включении новых элементов в кучу. Помните, что независимо от типа операций, которые вы выполняете с максимальной кучей, сохранение свойств кучи является жизненно важным.
Шаги по удалению/перемещению узлов в Max Heap
Приведенные ниже шаги помогут вам эффективно удалить узлы максимальной кучи:
– Возьмите последний дочерний узел и переместите его на последний уровень корня.
– Сравните дочерний и родительский узлы.
– Если значение родительского узла ниже, чем узла его ребенка, лучше всего поменять их местами, а затем повторять процесс до тех пор, пока вы не удовлетворите кучу.
Как уже упоминалось ранее, вы должны ознакомиться с различными структурами данных и понять, как лучше всего уверенно подходить к сложным вопросам, связанным с кодированием. Это также поможет вам получить четкое представление о реализации min и max куч, что гарантирует, что вы сможете использовать их без каких-либо затруднений.
Шаги по построению Min Heap
Элементы, присутствующие в min heap, обычно действуют в соответствии со свойством min heap, которое значительно отличается от того, как работает max heap. Помните, что ключ родительского узла всегда меньше ключа дочернего узла. Следующие шаги помогут вам создать min heap:
– Сформируйте совершенно новый дочерний узел на самом низком уровне, который является концом кучи.
– Включите новый ключ в этот узел.
– Начните перемещать дочерний узел вверх, убедившись, что вы удовлетворяете свойству кучи, достигнув корневого узла.
Шаги для удаления или удаления корневого узла в Min Heap
– Просто удалите корневой узел
– Переместите ключ последнего дочернего узла в корневой узел
– Выполните сравнительный анализ между узлом и его детьми
– Если значение родительского узла выше, чем дочерних, поменяйте их местами, а затем повторяйте процесс до тех пор, пока не удовлетворите свойство кучи.
Почему кучи важны
Хотя понимание того, как работает реализация min и max кучи, – это хорошо и правильно, вы также должны узнать причину, по которой кучи так важны. Во-первых, программисты используют кучу в операционных системах планирования работы, чтобы работодатели могли вызывать людей в соответствии с приоритетом. Вы также найдете кучи в различных алгоритмах сортировки куч для реализации приоритетных очередей. Алгоритм Дейкстры также использует кучу для определения коротких путей.