Java快速排序算法实例
public class Main {
//快速排序
public static void Query(int[] nums, int start, int end) {
//防御参数错误
if (start < 0 || end > nums.length || start >= end) {
return;
}
int initial = nums[start];//基准数
int i = start;
int j = end;
while (i != j) {
//从后往前
if (initial < nums[j]) {
j--;
}
//从前往后
if (initial > nums[i]) {
i++;
}
//i、j值交换
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
//和基准数互换
if (nums[i] < initial) {
nums[start] = nums[i];
nums[i] = initial;
}
//递归
Query(nums, start, i - 1);
Query(nums, i + 1, end);
}
public static void main(String args[]) {
int nums[] = new int[]{6, 8, 1, 3, 9, 4, 2, 7, 10, 5};
Query(nums, 0, nums.length - 1);
for (int i = 0; i < nums.length; i++) {
System.out.print(" " + nums[i]);
}
}
}