帮我使用java写一个快排
时间: 2023-07-20 12:25:32 浏览: 80
好的,下面是使用Java实现的快速排序算法:
```java
public static void quickSort(int[] arr, int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[left];
int i = left;
int j = right;
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
if (i < j) {
arr[i++] = arr[j];
}
while (i < j && arr[i] < pivot) {
i++;
}
if (i < j) {
arr[j--] = arr[i];
}
}
arr[i] = pivot;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
```
快排的基本思路是:选取一个基准值,将比它小的数放在左边,比它大的数放在右边,然后递归地对左右两个子序列进行排序。
在上述代码中,我们选取数组的最左边的元素作为基准值(pivot),然后使用两个指针i和j分别指向序列的最左边和最右边,接着进行如下操作:
1. 从右往左找到第一个比基准值小的数,交换该数和i所指向的数;
2. 从左往右找到第一个比基准值大的数,交换该数和j所指向的数;
3. 重复上述两个步骤,直到i和j相遇。
最后,将基准值放到正确的位置上,即左边都比它小,右边都比它大,然后递归地对左右两个子序列进行排序,直到整个序列都有序。
阅读全文