private static void quickSort(int[] arr , int start ,int end){
/**定义一个终止的条件*/
if(start >= end){
return ;
}
/** 在这里的i我们必须从start开始,因为,如果数组本来就是有序的,
* 那么一圈下来,还是会做一个交换,如果从i+1开始,那么最后将会导致本来有序的数组变成了无序**/
int i = start,j =end;
/**这里我们要明白一个目的,base左边是比base小的,右边是比base大的**/
int baseIndex = start ,baseValue = arr[start];
while(i < j){
/**需要注意的是,这里的比较需要带上等号,否则会陷入死循环*/
/**从后往前,碰到比base大的,就继续往前走,碰到小的就停止并交换**/
while(baseValue <= arr[j] && j>i){
j-- ;
}
arr[baseIndex] = arr[j];
/**从前往后,碰到比base小的,就继续,碰到大的就停止**/
while(baseValue >= arr[i] && j>i){
i