Java学习笔记——排序算法之快速排序

时间:2022-04-05 22:46:59

会当凌绝顶,一览众山小。

          ——望岳

如果说有哪个排序算法不能不会,那就是快速排序(Quick Sort)了

快速排序简单而高效,是最适合学习的进阶排序算法。

直接上代码:

 public class QuickSort {

     public static void quickSort(int[] arr){
qSort(arr,,arr.length - );
}
public static void qSort(int[] arr, int l, int r) {
int i = l;
int j = r;
// l<r 进入,否则return
if (i < j) {
while (i < j) {
while (i < j) {
if (arr[j] < arr[i]) {
arr[j] = arr[j] ^ arr[i];
arr[i] = arr[j] ^ arr[i];
arr[j] = arr[j] ^ arr[i];
break;
}
j--;
}
if (i == j) {
break;
}
i++; while (i < j) {
if (arr[i] > arr[j]) {
arr[j] = arr[j] ^ arr[i];
arr[i] = arr[j] ^ arr[i];
arr[j] = arr[j] ^ arr[i];
break;
}
i++;
}
if (i == j) {
break;
}
j--;
} qSort(arr, l, i);//递归
qSort(arr, j + , r);
}
}
}

想象一个简单的int[] arr = {2,3,1}

第一趟:{1,3,2},i=1

第二趟:{1,2,3},j=1

跳出循环,执行qSort(0,1)和qSort(2,2)

qSort(0,1),循环一次后执行qSort(0,0)和qSort(1,1),分别return

qSort(2,2)直接return,排序完成。

最后附上算法比较:

Java学习笔记——排序算法之快速排序