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
最新推荐文章于 2025-11-06 23:38:23 发布
本文介绍了一个使用Java实现的快速排序算法。通过递归的方式对数组进行排序,并详细展示了排序过程中的关键步骤,包括分区操作及左右子数组的递归排序。
724

被折叠的 条评论
为什么被折叠?



