帮我写一个java的快速排序
时间: 2023-10-18 09:18:34 浏览: 75
快速排序是一种非常高效的排序算法,其基本思想是通过不断地递归,将数组划分为较小和较大的部分,并对它们进行排序。
下面是一个 Java 实现的快速排序算法:
```
import java.util.Arrays;
public class QuickSort {
public static void main(String[] args) {
int[] arr = {5, 2, 6, 1, 3, 9, 4, 8, 7};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr, int left, int right) {
// 左下标一定小于右下标,否则就越界了
if (left < right) {
// 对数组进行分割,取出下次分割的基准标号
int pivot = partition(arr, left, right);
// 对“基准标号“左侧的一组数值进行递归排序
quickSort(arr, left, pivot - 1);
// 对“基准标号“右侧的一组数值进行递归排序
quickSort(arr, pivot + 1, right);
}
}
public static int partition(int[] arr, int left, int right) {
// 指定左端点的值为基准值
int pivot = arr[left];
while (left < right) {
// 从右端点开始向左遍历,找到小于基准值的数
while (left < right && arr[right] >= pivot) {
right--;
}
// 找到后就把该数赋值给左端点的值(此时的 left 位置上的值是基准值,已被记录,可覆盖)
arr[left] = arr[right];
// 从左端点开始向右遍历,找到大
阅读全文