public class Test {
public static void main(String[] args) {
int[] a = {5, 2, 6, 9, 1, 3, 7,4,0,8};
printIntArray(a);
qsort(a, 0, a.length - 1);
printIntArray(a);
}
public static void qsort(int[] a, int left, int right) {
if (left>right) return ;
int left_pointer = left;
int right_pointer = right;
int key = a[left];
while (left_pointer < right_pointer) {
while (left_pointer < right_pointer && key < a[right_pointer]) {//从右边开始找小于key的值
right_pointer--;
}
a[left_pointer] = a[right_pointer];//如果找到交换,否则就是left_pointer = right_pointer
while (left_pointer < right_pointer && key > a[left_pointer]) {
left_pointer++;
}
a[right_pointer] = a[left_pointer];
}
a[left_pointer] = key;//一趟排序完毕,key放入指针位置,这时left_pointer = righ_pointer,key左边都比它小,右边都比它大,然后各自递归左右两边
qsort(a, left, left_pointer - 1);
qsort(a, left_pointer + 1, right);
}
public static void printIntArray(int[] a) {
for (int i : a) {
System.out.print(i + " ");
}
System.out.println("");
}
}
java快速排序(快排)算法Quicksort
最新推荐文章于 2024-06-18 16:17:50 发布