注意点:先找end,再找start,因为start找的是比基准大的数,有可能将大数与基准数进行交换,导致基准数左侧存在比基准数大的数字。
package page01;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr = {1,1, 6, 2, 7, 9, 3, 4, 5, 1,10, 8};
quickSort(arr,0,arr.length-1);
// for (int i = 0; i < arr.length; i++) {
// System.out.print(arr[i]+" ");
// }
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int []arr, int i, int j) {
if (i>j) {
return;
}else{
int start=i;
int end=j;
int baseNum=arr[i];
while(start!=end){
while(true){
if (end<=start||arr[end]<baseNum){
break;
}else{
end--;
}
}
while(true){
if (start>=end||arr[start]>baseNum){
break;
}else{
start++;
}
}
int temp=arr[end];
arr[end]=arr[start];
arr[start]=temp;
}
int temp=arr[i];
arr[i]=arr[start];
arr[start]=temp;
quickSort(arr,i,start-1);
quickSort(arr,start+1,j);
}
}
}