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

编写Java函数实现快速排序

发布时间:2023-10-28 01:39:19

快速排序是一种常用的排序算法,它基于分治法的思想。下面是一个使用Java编写的快速排序函数的示例:

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

    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];
        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;
    }
}

这个示例代码中,我们定义了一个 QuickSort 类,其中包含了 quickSortpartition 两个静态方法。

quickSort 方法是主要的快速排序算法实现。它接受一个整数数组 arr、数组的起始索引 low 和结束索引 high 作为参数。首先判断 low 是否小于 high,如果是,则找到一个基准点(本实现中选择起始位置的元素作为基准点)。然后,通过调用 partition 方法将数组划分成两部分,左边小于基准点,右边大于基准点。最后,对左右两部分进行递归调用 quickSort 方法,分别对它们进行排序。

partition 方法主要用于划分数组。它接受一个整数数组 arr、划分的起始索引 low 和结束索引 high 作为参数。首先,选择起始位置的元素作为基准点,并将 pivot 初始化为该值。然后,通过双指针的方式找到一个比 pivot 小的元素和一个比 pivot 大的元素,将它们进行交换。重复这个过程,直到指针 lowhigh 相遇。最后,将 low 的值赋给 pivot,返回 low

main 方法中,我们定义了一个整数数组 arr,并初始化为 {9, 5, 1, 6, 2, 8, 7, 3, 4}。然后,我们调用 quickSort 方法对数组进行排序,并使用循环遍历打印出排序后的结果。

以上就是一个使用Java编写的快速排序函数的示例,通过该程序可以实现对整数数组的快速排序操作。