用Java给我写一个快速排序算法
时间: 2023-05-27 20:07:13 浏览: 114
Java 快速排序算法
以下是使用Java实现的快速排序算法:
```
public class QuickSort {
public static void quickSort(int[] arr, int start, int end) {
if (start < end) {
int pivotIndex = partition(arr, start, end);
quickSort(arr, start, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, end);
}
}
private static int partition(int[] arr, int start, int end) {
int pivot = arr[end];
int i = start;
for (int j = start; j < end; j++) {
if (arr[j] < pivot) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
}
}
int temp = arr[i];
arr[i] = arr[end];
arr[end] = temp;
return i;
}
public static void main(String[] args) {
int[] arr = {5, 2, 7, 3, 9, 1, 6, 8, 4};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
}
```
在这个实现中,我们首先定义了一个`quickSort`方法来进行递归排序。该方法接受一个数组、起始位置和结束位置作为参数。如果起始位置小于结束位置,则进行以下操作:
1. 调用`partition`方法,将数组分成两个部分,左侧部分的元素都小于枢轴元素,右侧部分的元素都大于等于枢轴元素。
2. 递归调用`quickSort`方法,对左侧和右侧部分进行排序。
接下来,我们定义了`partition`方法来分割数组。该方法接受一个数组、起始位置和结束位置作为参数,并返回枢轴元素的索引。在该方法中,我们选择最后一个元素作为枢轴元素。我们使用两个指针`i`和`j`,其中`i`指向第一个大于等于枢轴元素的元素,而`j`则从左到右扫描数组。如果`arr[j]`小于枢轴元素,则将其与`arr[i]`交换,并将`i`加1。最后,我们将枢轴元素与`arr[i]`交换,将数组分成两个部分,左侧部分的元素都小于枢轴元素,右侧部分的元素都大于等于枢轴元素。
在`main`方法中,我们定义了一个待排序的数组,并调用`quickSort`方法进行排序。最后,我们输出排序后的数组。
阅读全文