public class QuickSort {
/**
* 快速排序
* @param args
*/
public static void main(String[] args) {
int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
quickSort(arr, 0, arr.length-1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr,int left,int right){
int i,j,standard;
//left与right固定不变,通过改变i、j进行指针的移动
i = left;
j= right;
//迭代退出的条件
if(i>=j){
return;
}
standard = arr[left];
while(i<j){
//以左起点为基准值,要先移动右指针,否则可能会出现基准值与j位置的值交换后,j左侧的数组值不满足都小于j位置的值
while(standard<=arr[j] && i<j){
j--;
}
while(standard>=arr[i] && i<j){
i++;
}
if(i<j){
arr[j] = arr[j]^arr[i];
arr
07-27
3838