代码语言:javascript复制确定边界 选中目标 小于它的放左边,大于它的放右边 递归左右两边
/**
* 快排模板
*/
static void quitSort(int [] arr ,int l,int r){
if(l>=r) return ;
int i=l-1,j=r 1;
int target=arr[l];//选中左边的值为目标值
while(i<j){
do {
i ;
}while(arr[i]<target);//小于选中的数 放到左边`
do {
j--;
}while(arr[j]>target);//大于选中的数 放到右边
// i<j是停止,那么左右都不满足情况 此时交换ij的值
if(i<j){
swap(arr,i,j);
}
}
//完事之后把arr[j] 左右两边的值继续进行快排 这里一定是j
quitSort(arr,l,j);
quitSort(arr,j 1,r);
}
private static void swap(int[] arr, int i, int j) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}