以下是一个Java快速排序的实现:

public class QuickSort {
    public static void main(String[] args) {
        int[] arr = {10, 7, 8, 9, 1, 5};
        int n = arr.length;
        quickSort(arr, 0, n-1);
        System.out.println("Sorted array:");
        for (int i=0; i<n; ++i)
            System.out.print(arr[i]+" ");
    }

    static void quickSort(int[] arr, int low, int high) {
        if (low < high) {
            int pi = partition(arr, low, high);
            quickSort(arr, low, pi-1);
            quickSort(arr, pi+1, high);
        }
    }

    static int partition(int[] arr, int low, int high) {
        int pivot = arr[high];
        int i = low - 1;
        for (int j=low; j<high; ++j) {
            if (arr[j] < pivot) {
                i++;
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        int temp = arr[i+1];
        arr[i+1] = arr[high];
        arr[high] = temp;
        return i+1;
    }
}

在这个实现中,我们使用了递归的方式来实现快速排序。在 quickSort 方法中,我们首先计算出一个 pivot 值,并调用 partition 方法将数组划分为两个部分。然后我们再对左侧部分和右侧部分进行递归调用 quickSort 方法,直到排序完成。

partition 方法中,我们首先将 pivot 值设为数组的最后一个元素。然后我们用 i 来标记小于 pivot 的元素的位置,初始值为 low - 1。我们从 lowhigh-1 遍历数组,如果当前元素小于 pivot,我们就将 i 的值加一,并将当前元素与 arr[i] 交换。最后,我们将 arr[i+1]arr[high] 交换,并返回 i+1。这样就完成了一次划分。

写一个java快速排序

原文地址: https://www.cveoy.top/t/topic/bqgy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录