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

Java函数实现数组元素排序:快速排序方法

发布时间:2023-07-19 00:09:40

快速排序是一种常用的排序算法,其基本思想是选取一个基准元素,将数组中小于基准元素的元素放在左边,大于基准元素的元素放在右边,然后再分别对左右两个子数组进行排序,递归地进行下去,直到整个数组有序。

下面是用Java实现的快速排序算法:

public class QuickSort {
    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); // 对右侧子数组进行排序
        }
    }

    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 = {9, 5, 7, 1, 3, 6, 4, 8, 2};
        quickSort(arr, 0, arr.length - 1);
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

上述代码中的quickSort方法是递归实现快速排序的关键部分,它接收一个数组和两个指示排序范围的索引参数。首先判断low是否小于high,如果是则将数组划分为两个子数组,并获取基准元素的索引pivotIndex。然后递归调用quickSort方法对左右两个子数组进行排序。

在递归过程中,partition方法才是真正实现排序的地方。它以low所指的元素作为基准元素,通过遍历交换数组元素的方式,将小于基准元素的元素放在基准元素的左边,大于基准元素的元素放在基准元素的右边,最终将基准元素放置到正确的位置上。该方法返回基准元素的索引,以供quickSort方法划分子数组。

最后,在main方法中调用quickSort方法对给定的数组进行排序,并打印排序后的结果。

使用快速排序算法可以高效地对数组进行排序,其平均时间复杂度为O(nlogn)。在实际应用中,快速排序是一种常用且高效的排序算法。