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

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

发布时间:2023-07-03 12:47:20

快速排序是一种常用的排序算法,其核心思想是对待排序的数组选择一个基准元素,然后将数组分成小于基准元素和大于基准元素的两部分,再对这两部分分别进行快速排序,递归实现整个排序过程。

在Java中实现快速排序算法的核心函数如下:

public static void quickSort(int[] arr, int low, int high) {
    if (arr == null || arr.length == 0) {
        return;
    }
    
    if (low >= high) {
        return;
    }
    
    // 选择基准元素
    int pivot = arr[low + (high - low) / 2];
    
    // 将数组分成小于基准元素和大于基准元素的两部分
    int i = low;
    int j = high;
    while (i <= j) {
        while (arr[i] < pivot) {
            i++;
        }
        while (arr[j] > pivot) {
            j--;
        }
        if (i <= j) {
            swap(arr, i, j);
            i++;
            j--;
        }
    }
    
    // 递归地对两部分进行快速排序
    if (low < j) {
        quickSort(arr, low, j);
    }
    
    if (high > i) {
        quickSort(arr, i, high);
    }
}

private static void swap(int[] arr, int i, int j) {
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

在上述代码中,我们首先对输入的数组是否为空或者长度为0做了判断,如果是,则直接返回。然后,我们判断low是否大于等于high,如果是,则直接返回,表示已经排好序了。

接下来,我们选择一个基准元素,这里采用的是取数组中间位置的元素。然后,我们使用两个指针i和j,分别从数组的两端向中间移动,如果arr[i]小于基准元素,则i向后移动;如果arr[j]大于基准元素,则j向前移动。直到i和j相遇,此时将i位置的元素与j位置的元素交换,然后i向后移动,j向前移动。

接下来,我们递归地对两部分分别进行快速排序。递归的结束条件是low大于等于j或者high小于等于i。

最后,我们定义了一个辅助函数swap,用来交换数组中两个位置的元素。

这就是在Java中实现快速排序算法的核心函数。快速排序是一种高效的排序算法,其平均时间复杂度为O(nlogn),最坏情况下的时间复杂度为O(n^2)。