代码原理图(原理图摘自网络)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fac69a9b1d9a96dbc9111baf16bbcab4.gif)
代码
public class QuickSort {
public void sort(int[] arr) {
sort(arr, 0, arr.length - 1);
}
private void sort(int[] arr, int l, int r) {
if (l >= r)
return;
int j = partation(arr, l, r);
sort(arr, l, j - 1);
sort(arr, j + 1, r);
}
private int partation(int arr[], int l, int r) {
int i = l;
int j = r + 1;
int mark = arr[l];
while (true) {
while (arr[++i] <= mark) if (i == r) break;
while (arr[--j] >= mark) if (j == l) break;
if (i >= j) break;
swap(arr,i,j);
}
swap(arr,l,j);
return j;
}
public void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}