Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

77 lines
2.0 KiB

.. _min_heap_api:
Min-Heap Data Structure
#######################
.. contents::
:local:
:depth: 2
The Min-Heap implementation provides an efficient data structure for
managing a dynamically changing list of elements while maintaining the ability
to quickly extract the minimum value. It's a tree-based data structure that
satisfies the heap property and supports common operations such as insertion,
removal and popping the minimum element from the Min-Heap
This section explains the motivation behind the implementation, its internal
structure, API usage, and example scenarios for embedded systems and real-time
environments.
Heap Structure
**************
The heap is maintained as a complete binary tree stored in an array.
Each node satisfies the **min-heap** property:
- The value of each node is less than or equal to the values of its children.
This property ensures that the **minimum element is always at the root**
(index 0).
.. code-block:: text
Index: 0 1 2 3 4 5 6
Values: [1, 3, 5, 8, 9, 10, 12]
1
/ \
3 5
/ \ / \
8 9 10 12
For any node at index ``i``, its children are at indices:
- Left child: :math:`2*i + 1`
- Right child: :math:`2*i + 2`
Its parent is at index:
- Parent: :math:`(i - 1) / 2`
Use Cases
*********
MinHeap is well suited for:
- Implementing priority queues
- Sorting data incrementally
- Resource arbitration (e.g., lowest-cost resource selection)
- Scheduling in cooperative multitasking systems
- Managing timeouts and delay queues
- Priority-based sensor or data sampling
In RTOS environments like Zephyr, this heap can be used in kernel-level or
application-level modules where minimal latency to obtain the highest priority
resource is needed.
Samples
*******
:zephyr:code-sample:`min-heap` sample demos the API usage of Min-Heap
implementation in Zephyr RTOS.
API Reference
*************
.. doxygengroup:: min_heap_apis