Friday, September 9, 2022
HomeWordPress DevelopmentIntroduction to Heap Knowledge Construction

Introduction to Heap Knowledge Construction


  

#embrace <bits/stdc++.h>

utilizing namespace std;

  

class MaxHeap {

    

    

    int* arr;

  

    

    

    int maxSize;

  

    

    

    int heapSize;

  

public:

    

    MaxHeap(int maxSize);

  

    

    

    void MaxHeapify(int);

  

    

    

    int mum or dad(int i)

    {

        return (i - 1) / 2;

    }

  

    

    int lChild(int i)

    {

        return (2 * i + 1);

    }

  

    

    

    int rChild(int i)

    {

        return (2 * i + 2);

    }

  

    

    

    int removeMax();

  

    

    

    void increaseKey(int i, int newVal);

  

    

    

    int getMax()

    {

        return arr[0];

    }

  

    int curSize()

    {

        return heapSize;

    }

  

    

    void deleteKey(int i);

  

    

    void insertKey(int x);

};

  

MaxHeap::MaxHeap(int totSize)

{

    heapSize = 0;

    maxSize = totSize;

    arr = new int[totSize];

}

  

void MaxHeap::insertKey(int x)

{

    

    

    if (heapSize == maxSize) {

        cout << "nOverflow: Couldn't insertKeyn";

        return;

    }

  

    

    

    heapSize++;

    int i = heapSize - 1;

    arr[i] = x;

  

    

    

    

    whereas (i != 0 && arr[parent(i)] < arr[i]) {

        swap(arr[i], arr[parent(i)]);

        i = mum or dad(i);

    }

}

  

void MaxHeap::increaseKey(int i, int newVal)

{

    arr[i] = newVal;

    whereas (i != 0 && arr[parent(i)] < arr[i]) {

        swap(arr[i], arr[parent(i)]);

        i = mum or dad(i);

    }

}

  

int MaxHeap::removeMax()

{

    

    

    if (heapSize <= 0)

        return INT_MIN;

    if (heapSize == 1) {

        heapSize--;

        return arr[0];

    }

  

    

    

    int root = arr[0];

    arr[0] = arr[heapSize - 1];

    heapSize--;

  

    

    

    MaxHeapify(0);

  

    return root;

}

  

void MaxHeap::deleteKey(int i)

{

    

    

    

    increaseKey(i, INT_MAX);

    removeMax();

}

  

void MaxHeap::MaxHeapify(int i)

{

    int l = lChild(i);

    int r = rChild(i);

    int largest = i;

    if (l < heapSize && arr[l] > arr[i])

        largest = l;

    if (r < heapSize && arr[r] > arr[largest])

        largest = r;

    if (largest != i) {

        swap(arr[i], arr[largest]);

        MaxHeapify(largest);

    }

}

  

int important()

{

    

    MaxHeap h(15);

  

    

    int ok, i, n = 6, arr[10];

    cout << "Entered 6 keys:- 3, 10, 12, 8, 2, 14 n";

    h.insertKey(3);

    h.insertKey(10);

    h.insertKey(12);

    h.insertKey(8);

    h.insertKey(2);

    h.insertKey(14);

  

    

    

    cout << "The present measurement of the heap is "

         << h.curSize() << "n";

  

    

    

    cout << "The present most factor is " << h.getMax()

         << "n";

  

    

    h.deleteKey(2);

  

    

    

    cout << "The present measurement of the heap is "

         << h.curSize() << "n";

  

    

    h.insertKey(15);

    h.insertKey(5);

    cout << "The present measurement of the heap is "

         << h.curSize() << "n";

    cout << "The present most factor is " << h.getMax()

         << "n";

  

    return 0;

}

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments