Hola necesito que me explique como funciona este código del método QuickSort
public class QuickSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int array []={8,7,3,1,9};
System.out.println("QUICK SORT\n");
System.out.println("VALOR ANTES DEL QUICKSORT:\n");
for(int i =0;i<array.length;i++){
System.out.println(array[i]+"");
System.out.println();
}
quick_srt(array,0,array.length-1);
System.out.println("\n\n\nVALORES DESPUES DEL QUICK SORT:\n\n");
for(int i =0;i<array.length;i++){
System.out.println(array[i]+"");
System.out.println();}
}
public static void quick_srt(int array[],int low,int n){
int lo=low;
int hi=n;
if(lo>=n){
return;
}
int mid=array[(lo+hi)/2];
while (lo<hi){
while (lo<hi&& array[lo]<mid){
lo++;
}
while (lo<hi&& array[hi]>mid){
hi--;
}
if(lo<hi){
int T=array[lo];
array[lo]=array[hi];
array[hi]=T;
}
if(hi<lo){
int T=hi;
hi=lo;
lo=T;
}
quick_srt(array,low,lo);
quick_srt(array,lo==low?lo+1:lo,n);
}
}
}