public class Main6 {
public static void main(String[] args) {
System.out.println("Hello world! - java.jsrun.net ");
int[] a={5,3,21,21,32,10,34,53,2,35,74};
int[] b={10,9,8,7,6,5,4,3,2,1};
int[] c={1,2,3,4,5,6,7,8,9,10};
int[] d={0,0,0,0};
int[] e={1};
int[] f={2,1};
quickSort(a,0,a.length);
display(a);
quickSort(b,0,b.length);
display(b);
quickSort(c,0,c.length);
display(c);
quickSort(d,0,d.length);
display(d);
quickSort(e,0,e.length);
display(e);
quickSort(f,0,f.length);
display(f);
}
public static void display(int[] array){
for (int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
System.out.println();
}
public static void quickSort(int[] array, int arrStart, int arrEnd){
int arrLen = arrEnd - arrStart;
if(arrLen <= 1){
return;
}
int pivotPos = findPivot(array,arrStart,arrEnd);
int point = partition(array,arrStart,arrEnd,pivotPos);
quickSort(array,arrStart,point);
quickSort(array,point+1,arrEnd);
}
public static int findPivot(int[] array, int arrStart, int arrEnd){
int[] one ={array[arrStart],array[(arrEnd-arrStart)/2],array[arrEnd-1]};
int[] index={arrStart,(arrEnd-arrStart)/2,array[arrEnd-1]};
for(int i=0;i<2;i++){
for (int j=0;j<2;j++){
if(one[i]>one[i+1]){
int temp=one[i];
one[i]=one[i+1];
one[i+1]=temp;
temp = index[i];
index[i] = index[i+1];
index[i+1] = temp;
}
}
}
return index[1];
}
public static int partition(int[] array, int arrStart, int arrEnd , int pivotPos){
for(int i=arrStart;i<arrEnd;i++){
if(array[pivotPos]==array[i]){continue;}
else if(array[pivotPos]>array[i]){
if(i<pivotPos){
continue;
}
else {
int temp=array[i];
for(int j=i;j>pivotPos;j--){
array[j]=array[j-1];
}
array[pivotPos]=temp;
pivotPos++;
i--;
}
}
else {
if(i>pivotPos){
continue;
}
else{
int temp=array[i];
for(int j=i;j<pivotPos;j++){
array[j]=array[j+1];
}
array[pivotPos]=temp;
pivotPos--;
i--;
}
}
}
return pivotPos;
}
}