- 在十大经典排序算法中,快排的应用场景非常多,因此掌握快排的思想和实现是非常重要的。本文以将一个数组从小到大排序为例来讲解快排
十大经典排序算法比较
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b3779062e02ba0e41024267a60e68944.png)
快排的基本流程
- 1、选择一个中轴pivot
- 2、将比pivot大的元素放到其右边
- 3、将比pivot小的元素放到其左边
- 4、分别对左右列表元素按照前三步进行递归
- 5、递归的终止条件为元素列表的左下标≥右下标
代码实现
public class QuickSort {
public static void main(String[] args) {
int[] arrayToSort = {0, 5, 1, 2, 8, 9};
quickSort(arrayToSort, 0, arrayToSort.length - 1);
System.out.println(Arrays.toString(arrayToSort));
}
private static void quickSort(int[] arrayToSort, int L, int R) {
if (L >= R) {
return;
}
int left = L;
int right = R;
int pivot = arrayToSort[left];
while (left < right) {
while (left < right && arrayToSort[right] >= pivot) {
right--;
}
if (left < right) {
arrayToSort[left] = arrayToSort[right];
}
while (left < right && arrayToSort[left] <= pivot) {
left++;
}
if (left < right) {
arrayToSort[right] = arrayToSort[left];
}
}
arrayToSort[left] = pivot;
quickSort(arrayToSort, L, left - 1);
quickSort(arrayToSort, right + 1, R);
}
}