用java写一个快速排序
时间: 2023-06-29 13:11:16 浏览: 65
好的,以下是使用 Java 编写的快速排序算法:
```java
public class QuickSort {
public static void main(String[] args) {
int[] arr = {5, 3, 8, 4, 2};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivotIndex = partition(arr, low, high);
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
public static int partition(int[] arr, int low, int high) {
int pivot = arr[low];
int left = low + 1;
int right = high;
while (left <= right) {
while (left <= right && arr[left] < pivot) {
left++;
}
while (left <= right && arr[right] > pivot) {
right--;
}
if (left <= right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
int temp = arr[low];
arr[low] = arr[right];
arr[right] = temp;
return right;
}
}
```
这个快速排序算法使用了递归方式。在 `quickSort` 方法中,如果子数组大小大于 1,则调用 `partition` 方法进行划分,然后递归调用 `quickSort` 方法对左右子数组进行排序。
而 `partition` 方法则是找到一个基准值 `pivot`,将数组中小于 `pivot` 的元素移到左边,大于 `pivot` 的元素移到右边,最后返回 `pivot` 的位置。
阅读全文