欢迎访问宙启技术站
智能推送

通过Java函数实现快速排序的方法?

发布时间:2023-07-03 02:02:46

快速排序(Quick Sort)是一种高效的排序算法,采用分治法(Divide and Conquer)的思想。它的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据小,然后再按此方法对两个子部分分别进行排序,以达到整个序列有序的目的。下面是通过Java函数实现快速排序的方法:

public class QuickSort {
    public static void quickSort(int[] arr) {
        if (arr == null || arr.length == 0) {
            return;
        }
        sort(arr, 0, arr.length - 1);
    }

    private static void sort(int[] arr, int low, int high) {
        if (low >= high) {
            return;
        }
        int pivotIndex = partition(arr, low, high);
        sort(arr, low, pivotIndex - 1);
        sort(arr, pivotIndex + 1, high);
    }

    private static int partition(int[] arr, int low, int high) {
        int pivot = arr[low];
        while (low < high) {
            while (low < high && arr[high] >= pivot) {
                high--;
            }
            arr[low] = arr[high];
            while (low < high && arr[low] <= pivot) {
                low++;
            }
            arr[high] = arr[low];
        }
        arr[low] = pivot;
        return low;
    }

    public static void main(String[] args) {
        int[] arr = {5, 2, 6, 1, 3, 9, 4, 8, 7};
        quickSort(arr);
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

以上代码中,quickSort函数是快速排序的入口函数,它首先检查输入数组是否为空,然后调用sort函数进行排序。sort函数根据传入的低位和高位索引判断是否需要继续递归排序。partition函数是快速排序的核心,它首先选择数组的 个元素作为基准值,然后将比基准值大的元素移动到右边,比基准值小的元素移动到左边。最后,将基准值放入适当的位置,并返回基准值的索引。

main函数中,我们定义了一个示例数组,并调用quickSort函数进行排序。最后,用遍历数组的方式输出排序后的结果。

快速排序的时间复杂度为O(nlogn),是一种非常高效的排序算法。在实际使用时,可以根据具体需求对快速排序进行优化,例如使用三数取中法选择基准值,或者当待排序的子序列长度小于一定阈值时使用插入排序等。