/**
* 快速排序 : 空间复杂度O(1) 平均时间复杂度O(nlogn) 最坏时间复杂度O(n*n)
*
* 6,8,7,5,3,9,2,1,4
*/
public class QuickSort {
public static void sort(int[] arr){
quick_sort(arr,0,arr.length-1);
}
public static void quick_sort(int[] arr, int q, int r){
if(q > r) return;
int point = arr[q]; // 取第一个元素作为基准点
int i = q;
int j = r;
while(i < j){
while(i < j && arr[j] >= point){
j--;
}
if(point > arr[j]){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
while(i < j && arr[i] <= point){
i++;
}
if(point < arr[i]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
if(i > q){
quick_sort(arr,q,i-1);
}
if(j < r){
quick_sort(arr,j+1,r);
}
}
public static void main(String[] args) {
int[] arr = {6,8,7,5,3,9,2,1,4};
sort(arr);
for (int i : arr) {
System.out.print(i+" ");
}
}
}