package sortDmeo;
import java.util.Arrays;
/**
* Created by BorisLiu on 2019/11/29
*/
public class QuickSort {
public static void QuickSorted(int[] array,int start,int end){
if (start>end){
return;
}
int i = start;
int j = end;
int target = array[start];
//比较
//为什么不从i开始跑呢?
//我们可以想一下,如果排序的数字是
//2 1 3 4 5
//基准数是 2
//如果从左开始的话:跑到3
//从右往左的话也是到3 因为左右相遇了
//但是2如果跟3交换了
//3 2 1 4 5 显然是错误的
//但是从右往左就ok
while (i<j){
while (i<j&&array[j]>= target){
j--;
}
while(i<j &&array[i]<=target){
i++;
}
if (i<j){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
//跑完之后i=j,然后基准数归位
array[start] = array[i];
array[i] = target;
//递归左,右
QuickSorted(array,start,i-1);
QuickSorted(array,j+1,end);
}
public static void main(String[] args) {
int[] array = {9,5,0,2,2,3,1,31,5,41,1,23,1,5};
System.out.println(Arrays.toString(array));
QuickSorted(array,0,array.length-1);
System.out.println(Arrays.toString(array));
}
}
运行结果:
[9, 5, 0, 2, 2, 3, 1, 31, 5, 41, 1, 23, 1, 5]
[0, 1, 1, 1, 2, 2, 3, 5, 5, 5, 9, 23, 31, 41]