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

在Java中实现快速排序算法的函数方法

发布时间:2023-07-04 21:21:04

快速排序(QuickSort)是一种常用的排序算法,其基本思想是选择一个基准元素,将数组分成左右两部分,左边的元素都小于等于基准元素,右边的元素都大于等于基准元素,再分别对左右两部分进行递归排序。

下面是在Java中实现快速排序算法的函数方法的代码:

public class QuickSort {
    // 快速排序入口
    public void quickSort(int[] arr) {
        if (arr == null || arr.length == 0) {
            return;
        }
        quickSort(arr, 0, arr.length - 1);
    }

    // 快速排序递归函数
    private void quickSort(int[] arr, int low, int high) {
        if (low < high) {
            int pivot = partition(arr, low, high); // 将数组分成两部分
            quickSort(arr, low, pivot - 1); // 递归排序左子数组
            quickSort(arr, pivot + 1, high); // 递归排序右子数组
        }
    }

    // 划分函数(选取基准元素并排序)
    private 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, 3, 8, 4, 2, 7, 1, 6};
        QuickSort quickSort = new QuickSort();
        quickSort.quickSort(arr);
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

以上代码中,quickSort方法是快速排序的入口,partition方法是划分函数,将数组分成左右两部分,low表示数组起始位置,high表示数组结束位置。在partition函数中,首先选取第一个元素作为基准元素,然后通过两个指针从两端开始向中间移动,交换比基准元素大和小的元素位置,直到两个指针相遇,将基准元素放到正确位置。

quickSort递归函数中,首先判断是否需要继续递归,然后调用partition函数将数组分成左右两部分,并依次使用递归对左右两部分进行排序。

以上是Java中实现快速排序算法的函数方法的代码,可以在主函数中测试其正确性。