From 22aaca47622b06de130a0a2f8a41f7d7d459ea6c Mon Sep 17 00:00:00 2001 From: Luv Sharma <124135876+Stormbreakerr20@users.noreply.github.com> Date: Thu, 12 Oct 2023 12:10:00 +0530 Subject: [PATCH 1/2] Revert "Created Application Folder #5" From 6c199ad50b4394cb59d05657d7d427ad9608a470 Mon Sep 17 00:00:00 2001 From: Stormbreaker20 Date: Thu, 12 Oct 2023 12:18:29 +0530 Subject: [PATCH 2/2] Updated --- Computational_Algorithms/Heaps/heapify.cpp | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Computational_Algorithms/Heaps/heapify.cpp diff --git a/Computational_Algorithms/Heaps/heapify.cpp b/Computational_Algorithms/Heaps/heapify.cpp new file mode 100644 index 0000000..4fa7a34 --- /dev/null +++ b/Computational_Algorithms/Heaps/heapify.cpp @@ -0,0 +1,42 @@ +// an array will be given to you which is not a heap + +// heapify function is used to put the given node of bt to its correct position so it follows order of max heap + +// for given array we know leaf node are from n/2+1 to n : hence those nodes are alrady a heap individually so we need to solve for 1 to n/2 + +// if we start indexing from 0 : left =2i+1 right = 2i+2 + +#include +using namespace std; +// O(logn) +void heapify(int *arr , int n, int i){ + int leftchild = 2*i; + int rightchild = 2*i +1; + int largest=i; + + if(leftchildarr[largest]){ + largest=leftchild; + } + else if(rightchildarr[largest]){ + largest=rightchild; + } + + if(largest!=i){ + swap(arr[largest],arr[i]); + heapify(arr,n,largest); + } +} + +int main(){ + int arr[6]={-1,54,55,53,52,50}; + int n=5; + // build heap : O(n) + // if arr started directly from 0th index the i =n/2 -1 where n=arr.size() as leaf node found at arr.size()/2 to arr.size()-1 + for(int i=n/2 ; i>0 ;i--){ + heapify(arr,n,i); + } + + for(int i=1 ; i<=n ;i++){ + cout<