**快速排序(Quick Sort)**的每一轮处理其实就是将这一轮的基准数归位,直到所有的数都归位为止,排序就结束了
public static int[] qsort(int arr[],int start,int end) {
//在这个序列中随便找一个数作为基准数(就是一个用来参照的数),此处以第一个数为基准
int pivot = arr[start];
int i = start;
int j = end;
//为了让比pivot小的放左边 比pivot大的放右边
while (i<j) {
//先看右边 从右往左依次递减找到小于基准数的下标
while ((i<j)&&(arr[j]>pivot)) {
j--;
}
//再看左边,依次往右递增
while ((i<j)&&(arr[i]<pivot)) {
i++;
}
//如果相等 左边后移一位
if ((arr[i]==arr[j])&&(i<j)) {
i++;
} else {//如果满足条件则交换
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
//递归调用左半数组
if (i-1>start) arr=qsort(arr,start,i-1);
//递归调用右半数组
if (j+1<end) arr=qsort(arr,j+1,end);
return (arr);
}