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

Java函数:如何对数组进行快速排序?

发布时间:2023-11-05 12:44:42

快速排序是一种高效的排序算法,它的时间复杂度为O(nlogn)。它的基本思想是通过一趟排序将待排序的数组分割成两部分,其中一部分的元素小于等于基准元素,另一部分的元素大于基准元素,然后对这两部分分别进行递归排序。

实现快速排序的关键是选择基准元素,并且通过交换元素使得基准元素的左侧都小于等于基准元素,右侧都大于基准元素。下面是一个使用Java实现快速排序的示例函数:

public static 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 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; // 返回基准元素的位置
}

使用示例:

int[] arr = {5, 8, 2, 1, 6, 9, 3};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));

输出结果:

[1, 2, 3, 5, 6, 8, 9]

在实际使用中,可以根据需求适当调整基准元素的选择策略,例如选择随机位置的元素作为基准元素,或者选择三个元素中的中间值作为基准元素,以提高算法的性能。