30 inline explicit min_heap(
size_t max_size) noexcept : arr(
new T[max_size]) {
32 this->max_size = max_size;
35 inline ~min_heap() noexcept {
delete[] arr; }
42 inline T
parent(T i) {
return (i - 1) / 2; }
49 inline T
_left(T i) {
return (2 * i + 1); }
56 inline T
_right(T i) {
return (2 * i + 2); }
71 arr[0] = arr[heap_size - 1];
81 inline T
min() {
return arr[0]; }
83 inline void decrease_key(T i, T key) {
85 while (i != 0 && arr[
parent(i)] > arr[i]) {
86 std::swap(arr[i], arr[
parent(i)]);
98 if (heap_size == max_size) {
99 throw std::invalid_argument(
"Heap reached maximum size");
102 size_t i = heap_size - 1;
104 while (i != 0 && arr[
parent(i)] > arr[i]) {
105 std::swap(arr[i], arr[
parent(i)]);
109 }
catch (std::invalid_argument& e) {
110 std::cerr << e.what() <<
'\n';
121 decrease_key(key, INT_MIN);
134 if (left < heap_size && arr[left] < arr[i]) {
137 if (right < heap_size && arr[right] < arr[i]) {
141 std::swap(arr[i], arr[minim]);
min heap class
Definition min_heap.h:18
T _min()
__min function Returns the minimum with heapify
Definition min_heap.h:62
T min()
min function. Returns the minimum of the heap(the first element)
Definition min_heap.h:81
min_heap(size_t max_size) noexcept
Construct a new min heap object.
Definition min_heap.h:30
T _left(T i)
__left function
Definition min_heap.h:49
void heapify(T i)
heapify function
Definition min_heap.h:130
void insert(T key)
insert function
Definition min_heap.h:96
T _right(T i)
__right function
Definition min_heap.h:56
void remove(T key)
remove function
Definition min_heap.h:120
T parent(T i)
parent function
Definition min_heap.h:42