111 lines
3.4 KiB
Java
111 lines
3.4 KiB
Java
import java.io.*;
|
|
import java.util.*;
|
|
class HeapSrt
|
|
{
|
|
public int[ ] arr;
|
|
public HeapSrt(int MAX)
|
|
{
|
|
arr=new int[MAX];
|
|
}
|
|
|
|
public void makeheap(int n)
|
|
{
|
|
int val,j,father;
|
|
for(int i=1; i<n; i++)
|
|
{
|
|
val=arr[i];
|
|
j=i;
|
|
father=(j-1)/2;//finding the parent of node j
|
|
while(j>0&&arr[father]<val) //creating a MAX heap
|
|
{
|
|
arr[j]=arr[father];//preserving parent dominance
|
|
j=father;
|
|
father=(j-1)/2;
|
|
}
|
|
arr[j]=val;
|
|
}
|
|
}
|
|
void heapsort(int n)
|
|
{
|
|
int k,temp,j;
|
|
for(int i=n-1; i>0; i—)
|
|
{
|
|
temp=arr[i];
|
|
arr[i]=arr[0];
|
|
k=0;
|
|
if(i==1)
|
|
j=-1;
|
|
else
|
|
j=1;
|
|
if(i>2&&arr[2]>arr[1])
|
|
j=2;
|
|
while(j>=0&& temp <arr[j])
|
|
{
|
|
arr[k]=arr[j];
|
|
k=j;
|
|
j=2*k+1;
|
|
if(j+1<=i-1&&arr[j]<arr[j+1])
|
|
j++;
|
|
if(j>i-1)
|
|
j=-1;
|
|
}
|
|
arr[k]=temp;
|
|
}
|
|
}
|
|
/*
|
|
----------------------------------------------------------------------------------
|
|
display: function for displaying the elements
|
|
----------------------------------------------------------------------------------
|
|
*/
|
|
public void display(int n)
|
|
{
|
|
for(int i=0; i<n; i++)
|
|
System.out.println(arr[i]);
|
|
}
|
|
}
|
|
class HeapSrtDemo
|
|
{
|
|
public static void main(String[] args)throws IOException
|
|
{
|
|
HeapSrt obj=new HeapSrt(10);
|
|
int n;
|
|
System.out.println("\n\t Program for Heap Sort ");
|
|
System.out.println("\n How many elements are there?");
|
|
n=getInt();
|
|
System.out.println("\n Enter the elements ");
|
|
for(int i=0; i<n; i++)
|
|
obj.arr[i]=getInt();
|
|
System.out.println("\n The Elements are...");
|
|
obj.display(n);
|
|
obj.makeheap(n);
|
|
System.out.println("\n Heapified");
|
|
obj.display(n);
|
|
obj.heapsort(n);
|
|
System.out.println("\nElements sorted by Heap sort... ");
|
|
obj.display(n);
|
|
}//end of main
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//Following functions are used to handle the inputs entered
|
|
//by the user using keyboard
|
|
////////////////////////////////////////////////////////////////////////////
|
|
public static String getString() throws IOException
|
|
{
|
|
InputStreamReader input=new InputStreamReader(System.in);
|
|
BufferedReader b=new BufferedReader(input);
|
|
String str=b.readLine();//reading the string from console
|
|
return str;
|
|
}
|
|
public static char getChar() throws IOException
|
|
{
|
|
String str=getString();
|
|
return str.charAt(0);//reading first char of console string
|
|
}
|
|
public static int getInt() throws IOException
|
|
{
|
|
String str=getString();
|
|
return Integer.parseInt(str);//converting console string //to numeric value
|
|
}
|
|
}//end of class
|
|
|
|
|