static void quickSort(int[] array,int front,int tail){
if(front<tail){
int pivotPosition=partition(array,front,tail);
quickSort(array,front,pivotPosition-1);
quickSort(array,pivotPosition+1,tail);
}
}
static int partition(int[] array,int front,int tail){
int boundary;
int pivot;
int temp;
int middle=(front+tail)/2;
pivot=array[middle];
array[middle]=array[tail];
array[tail]=pivot;
boundary=front;
for(int i=front;i<tail;i++){
if(array[i]<pivot){
temp=array[boundary];
array[boundary]=array[i];
array[i]=temp;
boundary++;
}
}
temp=array[tail];
array[tail]=array[boundary];
array[boundary]=temp;
return boundary;
}
if(front<tail){
int pivotPosition=partition(array,front,tail);
quickSort(array,front,pivotPosition-1);
quickSort(array,pivotPosition+1,tail);
}
}
static int partition(int[] array,int front,int tail){
int boundary;
int pivot;
int temp;
int middle=(front+tail)/2;
pivot=array[middle];
array[middle]=array[tail];
array[tail]=pivot;
boundary=front;
for(int i=front;i<tail;i++){
if(array[i]<pivot){
temp=array[boundary];
array[boundary]=array[i];
array[i]=temp;
boundary++;
}
}
temp=array[tail];
array[tail]=array[boundary];
array[boundary]=temp;
return boundary;
}