import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.util.*;

public class QuickSort extends JApplet {
int list[];
JButton sort;
JTextArea ta;
int size;

int loop=0;

public String getContents(){
String tmp="";
for(int k=0;k<=19;k++){
 tmp=tmp+"  "+list[k];
 if(k%10==0)
    tmp=tmp+'\n';}
return tmp;
}

public void init(){
Random thing=new Random();
sort =new JButton("sort");
ta=new JTextArea(20,50);
list=new int[20];
for(int j=0;j<20;j++)
  list[j]=thing.nextInt(1000);
 

 Container c=getContentPane();
 c.setLayout(new BorderLayout());
 c.add(ta,BorderLayout.CENTER);
 c.add(sort,BorderLayout.SOUTH);
 ta.setText(getContents());
 sort.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   size=19;
ta.append("\nsort\n");
   quickSort(list,0,19);
   ta.append(getContents());
  }
 }
 );

}
 
 
 
 

public void quickSort(int list[],int left,int right){
if(left<right){
 int i=left;
 int j=right+1;
 int pivot=list[i];
 do{

  do i++; while(list[i]<pivot&&i<right);
  do j--; while (list[j]>pivot);
  if(i<j)swap(list,i,j);
 

}while(i<j);
swap(list,left,j);
//ta.append("recursion"+loop+getContents());
//loop++;
quickSort(list,left,j-1);
quickSort(list,j+1,right);

}//if

}//qsort
public void swap(int list[],int a,int b){
 int tmp=list[a];
 list[a]=list[b];
 list[b]=tmp;
}//swap
}//class