快速排序是极为优秀的排序算法,下面对该算法进行详细的计算。
算法基本思路:
快速排序一般基于递归实现。其思路是这样的:
1.选定一个合适的值(理想情况中值最好,但实现中一般使用数组第一个值),称为“枢轴”(pivot)。
2.基于“枢轴”(pivot)值,将数组分为两部分,较小的分在左边,较大的分在右边。
3.可以肯定,如此一轮下来,这个枢轴的位置一定在最终位置上。
4.对两个子数组分别重复上述过程,直到每个数组只有一个元素。
5.排序完成。
下面是快速排序的示意图(图片来自维基百科):
代码实现
public static void quickSort(int[] arr){
qsort(arr, 0<