Categories
Algorithm Algorithms & Design Sort

Heap Sort


public class HeapSort {

	public static void main(String[] args) {
		int arr[] = {1,12,9,14,16,80,33,3,4,7,60,2};
		
		System.out.println("printing an input array ::");
		printArray(arr);
		
		heapSort(arr);
		
		System.out.println("printing the sorted array::");
		printArray(arr);
	}

	static void printArray(int arr[])
    {
        int n = arr.length;
        for (int i = 0; i < n; ++i)
            System.out.print(arr[i] + " ");
        System.out.println();
    }
	
	static void heapSort(int arr[]){
		
		int n = arr.length;
		
		for(int i = n/2-1;i>=0;i--){
			heapify(arr,n,i);
		}
		
		System.out.println("printing the heapified array ::");
		printArray(arr);
		
		for(int i =n-1;i>0;i--){
			
			int temp = arr[0];
			arr[0] = arr[i];
			arr[i] = temp;
			
			heapify(arr,i,0);
		}
	}
	
	static void heapify(int arr[],int n	, int i){
		int largest =i;
		int left = 2*i+1;
		int right = 2*i+2;
		
		if(left<n && arr[left]>arr[largest])
			largest = left;
		if(right<n && arr[right]>arr[largest])
			largest = right;
		
		if(largest != i){
			int swap = arr[i];
			arr[i] = arr[largest];
			arr[largest] = swap;
			
			heapify(arr,n,largest);
		}
		
	}
}

Output:


printing an input array ::
1 12 9 14 16 80 33 3 4 7 60 2 
printing the heapified array ::
80 60 33 14 16 9 1 3 4 7 12 2 
printing the sorted array::
1 2 3 4 7 9 12 14 16 33 60 80 


Leave a comment

Design a site like this with WordPress.com
Get started