Quick Sort
public class QuickSort {
int[] num;
int n;
public QuickSort(int n){
this.n=n;
// p=0;q=n;
num=new int[n+1];
for(int i=0;i<n;i++){
num[i]= (int) Math.round(Math.random()*n/2+1000);
}
num[n]=99999;
// quickSort(0,n-1);
}
public void quickSort(){
quickSort(0,n-1);
}
public void quickSort(int p,int q){
int j;
if(p<q){
j=partition(p,q);
quickSort(p,j-1);
quickSort(j+1,q);
}
}
private int partition(int p, int q) {
int i=p;
int j=q+1;
int pivot=num[p];
do{
do{ i++;
}while(num[i]<pivot);
do{j--;
}while(num[j]>pivot);
if(i<j){
swap(i,j);}
}while(i<j);
swap(p,j);
return j;
}
private void swap(int i, int i0){
int temp=num[i];
num[i]=num[i0];
num[i0]=temp;
}
public void print(){
for(int i=0;i<n;i++){
System.out.print(num[i]+" ");
}
}
public static void main(String []a){
QuickSort s=new QuickSort(100);
System.out.println("Before Sort");
s.print();
s.quickSort();
System.out.println();
System.out.println("after Sort");
s.print();
}
}
int[] num;
int n;
public QuickSort(int n){
this.n=n;
// p=0;q=n;
num=new int[n+1];
for(int i=0;i<n;i++){
num[i]= (int) Math.round(Math.random()*n/2+1000);
}
num[n]=99999;
// quickSort(0,n-1);
}
public void quickSort(){
quickSort(0,n-1);
}
public void quickSort(int p,int q){
int j;
if(p<q){
j=partition(p,q);
quickSort(p,j-1);
quickSort(j+1,q);
}
}
private int partition(int p, int q) {
int i=p;
int j=q+1;
int pivot=num[p];
do{
do{ i++;
}while(num[i]<pivot);
do{j--;
}while(num[j]>pivot);
if(i<j){
swap(i,j);}
}while(i<j);
swap(p,j);
return j;
}
private void swap(int i, int i0){
int temp=num[i];
num[i]=num[i0];
num[i0]=temp;
}
public void print(){
for(int i=0;i<n;i++){
System.out.print(num[i]+" ");
}
}
public static void main(String []a){
QuickSort s=new QuickSort(100);
System.out.println("Before Sort");
s.print();
s.quickSort();
System.out.println();
System.out.println("after Sort");
s.print();
}
}

0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home