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

Java函数使用实例:如何实现快速排序算法

发布时间:2023-07-02 18:16:45

快速排序是一种常用的排序算法,它的时间复杂度是O(nlogn)。它的基本思想是通过一趟排序将待排序序列分割成两个子序列,其中一个子序列的所有元素都比另一个子序列的所有元素小,然后再对这两个子序列分别进行快速排序,直到整个序列有序。

下面是一个用Java实现快速排序算法的函数示例:

public class QuickSort {

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

    private static int partition(int[] arr, int low, int high) {
        int pivot = arr[low];   // 选择      个元素作为枢轴
        int left = low;
        int right = high;

        while (left < right) {
            // 从右往左找到      个比枢轴小的元素
            while (left < right && arr[right] >= pivot) {
                right--;
            }
            if (left < right) {
                arr[left] = arr[right];
                left++;
            }

            // 从左往右找到      个比枢轴大的元素
            while (left < right && arr[left] <= pivot) {
                left++;
            }
            if (left < right) {
                arr[right] = arr[left];
                right--;
            }
        }

        // 将枢轴放在left和right相遇处
        arr[left] = pivot;
        return left;
    }

    public static void main(String[] args) {
        int[] arr = {8, 2, 5, 1, 7, 9, 3, 6, 4};
        quickSort(arr, 0, arr.length - 1);

        System.out.println("排序结果:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

快速排序算法的核心在于partition函数,它通过不断移动left和right指针来找到枢轴应该放置的位置。在每次替换枢轴位置时,比枢轴小的元素都被移动到左边,比枢轴大的元素都被移动到右边。然后,将枢轴放在left和right相遇处,完成一次分割。

在快速排序函数中,首先判断low是否小于high,如果是,则选择一个枢轴,进行一次分割。然后,分别对枢轴左右两边的子序列进行快速排序。递归调用quickSort函数,直到low等于high,排序完成。

使用上述代码,可以对一个整型数组进行快速排序。代码中的main函数演示了对一个包含9个元素的数组进行排序,排序结果将会输出到控制台。

快速排序是一种高效的排序算法,它的实现相对简单,并且可以在大部分情况下都获得较好的性能。