最简洁的快速排序
首先了解快速排序的原理,
- 小 key 大 第一遍排序
- 右边扫描
- 左边扫描
public class QuickSort {
public static void main(String[] args) {
int[] str = {12, 32, 13, 654, 12, 43, 82, 23, 34, -2, -213, 42};
System.out.println("快速排序前:");
System.out.println(Arrays.toString(str));
System.out.println("快速排序后:");
sort(str, 0, str.length - 1);
System.out.println(Arrays.toString(str));
}
public static void sort(int[] a, int low, int high) {
if (low >= high)
return;
int l = low;
int r = high;
int key = a[l];
while (l < r) {
while (l < r && a[r] >= key) {
r--;
}
if (l < r) {
a[l] = a[r];
}
while (l < r && a[l] < key) {
l++;
}
if (l < r) {
a[r] = a[l];
}
if (l >= r) {
a[r] = key;
}
}
sort(a, low, r - 1);
sort(a, r + 1, high);
}
运行结果:
快速排序前:
[12, 32, 13, 654, 12, 43, 82, 23, 34, -2, -213, 42]
快速排序后:
[-213, -2, 12, 12, 13, 23, 32, 34, 42, 43, 82, 654]