Hi,我是哈缺氧。今天带给大家的是算神码男人系列快速排序。
思路很简单,如图所示。
根据这个思路,第一次,我写出了如下代码。
private static void qsort(int[] arr, int l, int r) {
if (l < r) {
int i = l + 1;
int j = r;
while (i < j) {
while (arr[i] <= arr[l] && i < j) {
i++;
}
while (arr[j] >= arr[l] && i < j) {
j--;
}
if (i < j && arr[i] > arr[j]) {
int tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
int logicMid = i;
int tem = arr[l];
if (arr[l] > arr[logicMid]) {
arr[l] = arr[logicMid];
arr[logicMid] = tem;
} else {
logicMid = j - 1;
arr[l] = arr[logicMid];
arr[logicMid] = tem;
}
qsort(arr, l, logicMid - 1);
qsort(arr, logicMid + 1, r);
}
}