思路
图示
代码
算法
/**
* 快速排序
*
* @param data
*/
public static void quickOrder(int[] data) {
quickOrder(data, 0, data.length - 1);
}
private static void quickOrder(int[] data, int start, int end) {
if (start >= end) {
return;
}
int left = start, right = end + 1, mark = data[start];
while (left < right) {
while (left < right && data[--right] > mark) {
}
while (left < right && data[++left] < mark) {
}
if (left < right) {
exchange(data, left, right);
}
}
exchange(data, start, left);
quickOrder(data, start, left - 1);
quickOrder(data, right + 1, end);
}
private static void exchange(int[] data, int i, int j) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
测试
public static void main(String[] args) {
int[] data = {5, 3, 4, 1, 2};
quickOrder(data);
System.out.println(Arrays.toString(data));
}
结果
[1, 2, 3, 4, 5]