In this tutorial we will see all the functionalities of heaps implemented through java language.
Driver program to run:-
package com.problems.heap; public class HeapFunctions { //Function to generate maxheapify where root is max than childs public void maxHeapify(int Arr[],int i,int N) { int largest; int left = 2*i+1; //left child int right = 2*i +2; //right child System.out.println("left"+" "+left); System.out.println("right"+" "+right); System.out.println("Max size"+" "+N); if(left< N && Arr[left] > Arr[i] ) { largest = left; System.out.println("largest left"+largest); } else { largest = i; System.out.println("largest i"+largest); } if(right < N && Arr[right] > Arr[largest] ) { largest = right; System.out.println("largest right"+largest); } if(largest != i ) { System.out.println("No largest"+largest); Arr=swap (Arr, i , largest); maxHeapify (Arr,largest,N); } } //function to generate minheapify where root is minimum than childs public void minHeapify(int Arr[],int i,int N) { int smallest; int left = 2*i+1; //left child int right = 2*i +2; //right child if(left< N && Arr[left]< Arr[i] ) { smallest = left; System.out.println("smallest left"+smallest); } else { smallest = i; System.out.println("smallest i"+smallest); } if(right < N && Arr[right] < Arr[smallest] ) { smallest = right; System.out.println("smallest right"+smallest); } if(smallest != i ) { System.out.println("No largest"+smallest); Arr=swap (Arr, i , smallest); minHeapify (Arr,smallest,N); } } //function to swap elements in an Array public int[] swap(int Arr[],int x,int y) { System.out.println("in swap"); System.out.println("x"+x+"y"+y); int temp=Arr[x]; Arr[x]=Arr[y]; Arr[y]=temp; return Arr; } //function to build maximum heap void build_maxheap (int Arr[ ],int N) { for(int i =N/2; i >= 0 ; i-- ) { maxHeapify (Arr, i,N) ; } } //function to build minimum heap void build_minheap (int Arr[ ],int N) { for(int i =N/2; i >= 0 ; i-- ) { minHeapify (Arr, i,N) ; } } //heap sorting void heap_sort(int Arr[ ],int N) { int heap_size = N; for(int i = N-1; i>=1 ; i-- ) { build_maxheap(Arr,heap_size); System.out.println("this"+i); System.out.println("i="+i+""); Arr=swap(Arr,0, i); heap_size = heap_size-1; System.out.println("calling max heapify"+heap_size); } } }
Driver program to run:-
package com.problems.heap; public class HeapOperations { public static void main(String[] args) { int Elem[]={4,3,7,1,8,5}; HeapFunctions func=new HeapFunctions(); //max heapify func.maxHeapify(Elem, 6, Elem.length); System.out.println("min heap"); func.build_maxheap(Elem, Elem.length); System.out.println(""); for(int i=0;i<Elem.length;i++) { System.out.print(Elem[i]+","); } System.out.println(""); // //min heapify System.out.println("min heap"); func.build_minheap(Elem, Elem.length); System.out.println(""); for(int i=0;i<Elem.length;i++) { System.out.print(Elem[i]+","); } System.out.println(""); // //heap sort System.out.println("Heap Sort length"+ Elem.length); int Elemm[]={4,3,7,1,8,5}; func.heap_sort(Elemm, Elemm.length); System.out.println(""); System.out.println("sorted array"); for(int i=0;i<Elemm.length;i++) { System.out.print(Elemm[i]+","); } // } }
Comments
Post a Comment