快速排序
核心:选定一个数作为中间数,比较其余元素,分别放在两边,对两边的数进行同样的的递归操作
关键词:一个while循环、先定位后交换、递归、避免死循环
动图
代码
public static void quicksort(int[] arr, int left, int right) {
int l = left;
int r = right;
int pivot = arr[(left + right) / 2];
while (l < r) {
while (arr[l] < pivot) {
l++;
}
while (arr[r] > pivot) {
r--;
}
if (l >= r) {
break;
}
int temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
if (arr[r] == pivot) {
r--;
}
if (arr[l] == pivot) {
l++;
}
}
if (l == r) {
l++;
r--;
}
if (left < r) {
quicksort(arr, left, r);
}
if (right > l) {
quicksort(arr, l, right);
}
}
本文动图来源:https://www.cnblogs.com/onepixel/p/7674659.html