package Chapter7;
import Chapter6.Heap;
import Util.arrayUtil;
import java.util.Arrays;
public class quickSort {
/**
* 该函数就是将一段数组划分为两个部分,
* 其中会返回一个数组位置q,在数组中
* p->q-1都是小于等于q对应的数组值
* q+1->r都是大于等于q对应的数组值
* 该函数的思想就是拿一个标志位来单独标识小于q对应的位置
* @param A
* @param p
* @param r
* @return
*/
public static int partition(int[] A,int p,int r){
int x=A[r];
int i=p-1;
for(int j=p;j<r;j++){
if(A[j]<=x){
i++;
arrayUtil.change(A,i,j);
}
}
arrayUtil.change(A,i+1,r);
return i+1;
}
public static void quickSort(int[] A,int p,int r){
if(p<r){
int q=partition(A, p, r);
quickSort(A,p,q-1);
quickSort(A,q+1,r);
}
}
public static void main(String[] args){
int[] array=new int[]{1,4,2,3,9,7,8,10,14,16};
quickSort(array,0,9);
System.out.println(Arrays.toString(array));
}
}