


import java.awt.*; import java.applet.*; import java.awt.event.*; import java.net.*; /*<applet code="Heapsort" height=650 width=1350></applet>*/ public class Heapsort extends Applet implements ActionListener,Runnable { Label lab1; TextField t1; String no; String str; int n,temp; Boolean clear,stop; int x[]=new int[12]; Thread clockThread; int y[]=new int[12]; Button start,go; int arr[]={0,87,23,1,99,45,9,31,77,15,25}; int arr2[]=new int[11]; Font f = new Font ("Serif", Font.BOLD, 25); Color background = new Color (210,111,121); public void init() { x[1]=550; y[1]=235; setLayout(new FlowLayout(FlowLayout.LEFT)); setFont(f); setBackground(background); lab1 = new Label("Enter the number of elements to be sorted"); add(lab1); t1 = new TextField("",5); add(t1); start=new Button("Make_Heap"); add(start); start.addActionListener(this); go=new Button("Next"); add(go); go.addActionListener(this); clockThread= new Thread(this); clockThread.start(); } public void destroy() { running = false; clockThread = null; } public void run() { while (running) { repaint(); try { // Wait 500milliseconds before continuing clockThread.sleep(500); } catch (InterruptedException e) { System.out.println(e); } } } public void actionPerformed(ActionEvent ae) { str = ae.getActionCommand(); if(str.equals("Make_Heap")) { no=t1.getText(); n=Integer.parseInt(no); arr2[0]=0; for(int i=1;i<=n;i++) { arr2[i]=arr[i]; } repaint(); heapify(arr2,n); //swapper(arr2,n); } if(str.equals("Next")) { clear=true; swapper(arr2,n); } } public void swapper(int arr2[],int n) { for(int i=n;i>=2;i--) { temp=arr2[i]; arr2[i]=arr2[1]; repaint(); arr2[1]=temp; adjust(arr2,1,i-1); } stop=true; repaint(); } public void heapify(int arr2[],int n) { int i; for(i=(n/2);i>=1;i--) { adjust(arr2,i,n); } } public void adjust(int arr2[],int i, int n) { int j,item; j=i*2; item=arr2[i]; while(j<=n) { if((j<n) && (arr2[j]<arr2[j+1])) { j=j+1; } if(item>=arr2[j]) { break; } else { arr2[j/2]=arr2[j]; repaint(); //do something j=2*j; } } arr2[j/2]=item; repaint(); //do something } public void paint(Graphics g) { g.drawString("OPERATIONS: ",1000,50); g.drawString("1.Make Heap(heapify)",1000,100); g.drawString("2.Swap 1st element with last ",1000,150); g.drawString("ORIGINAL ARRAY : ",100,100); for(int i=1;i<=10;i++) { g.drawString(""+arr[i],350+50*i,100); } for(int i=1;i<=5;i++) { x[2*i]=x[i]-100/i; x[2*i+1]=x[i]+100/i; y[2*i]=y[i]+90; y[2*i+1]=y[i]+90; } } public void update (Graphics g) { //repaint(); g.drawString("SELECTED ARRAY : ",100,150); for(int i=1;i<=n;i++) { g.drawString(""+arr[i],300+50*i,150); } g.drawString("ARRAY after Operation : ",100,200); for(int i=1;i<=n;i++) { g.drawString(""+arr2[i],350+50*i,200); } for(int i=1;i<=n;i++) { g.drawOval(x[i],y[i],50,50); g.drawString(""+arr2[i],x[i]+10,y[i]+30); } for(int i=1;i<=n/2;i++) { g.drawLine(x[i]+15,y[i]+50,x[2*i]+15,y[2*i]); if(i<n/2 || n%2!=0) g.drawLine(x[i]+15,y[i]+50,x[2*i+1]+15,y[2*i+1]); } if(clear==true) { g.setColor(background); g.fillRect(350,180,1700,1700); repaint(); clear=false; } if(stop==true) { g.setColor(Color.BLACK); g.drawString(" SORTED ARRAY : ",100,600); for(int i=1;i<=n;i++) { g.drawString(""+arr2[i],350+50*i,600); } System.exit(1); } } }