package com.sort;

import java.util.Random;

public class RandomQuickSort {
private static int partition(int []data ,int p,int r){
int random=new Random().nextInt(r-p)+p;
int tmpR=data[random];
data[random]=data[r];
data[r]=tmpR;

int x=data[r];
int i=p-1;
for(int j=p;j<=r-1;j++){
if(data[j]<=x){
i=i+1;
int tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}
}
int tmp=data[i+1];
data[i+1]=data[r];
data[r]=tmp;
return i+1;
}

public static void quickSort(int[]data,int p,int r){
if(p<r){
int q=partition(data,p,r);
quickSort(data,p,q-1);
quickSort(data,q+1,r);
}
}
public static void main(String[] args) {
int[] data=new int[]{1,3,7,9,11,12,5,4};
for(int i=0;i<data.length;i++){
System.out.print(data[i]+" ");
}
System.out.println();
quickSort(data,0,data.length-1);
for(int i=0;i<data.length;i++){
System.out.print(data[i]+" ");
}
System.out.println();
}

}