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

利用Java函数实现快速排序算法。

发布时间:2023-06-12 20:35:16

快速排序算法是一种高效的排序算法,其时间复杂度为O(nlogn)。其基本思想是通过分治法,选择一个基准元素将数组分成两个部分,一部分比基准元素小,一部分比基准元素大,并对两个子数组进行递归排序。

下面使用Java函数实现快速排序算法。

首先,我们定义一个函数partition,用于将数组分成两个部分。

public static int partition(int[] arr, int left, int right) {
    int pivot = arr[left];//选择      个元素为基准元素
    int i = left + 1;//左边指针
    int j = right;//右边指针
    while (i <= j) {
        if (arr[i] > pivot && arr[j] < pivot) {//如果左边的数比基准元素大,右边的数比基准元素小
            //交换左右指针所指的元素
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
        if (arr[i] <= pivot) {
            i++;
        }
        if (arr[j] >= pivot) {
            j--;
        }
    }
    //将基准元素与右边指针所指的元素交换
    arr[left] = arr[j];
    arr[j] = pivot;
    return j;
}

这个函数的作用是将数组arr分成两个部分,其中左边的元素均小于等于基准元素,右边的元素均大于等于基准元素。

接下来,我们定义一个函数quickSort,用于递归地对数组进行排序。

public static void quickSort(int[] arr, int left, int right) {
    if (left >= right) {//如果左右指针相遇
        return;
    }
    int pivotIndex = partition(arr, left, right);//获取基准元素所在的位置
    quickSort(arr, left, pivotIndex - 1);//对左侧部分进行递归排序
    quickSort(arr, pivotIndex + 1, right);//对右侧部分进行递归排序
}

这个函数的作用是对数组arr进行排序,其中left为左边界,right为右边界。

最后,我们可以编写测试代码来验证程序的正确性。

public static void main(String[] args) {
    int[] arr = {5, 4, 3, 2, 1};
    quickSort(arr, 0, arr.length - 1);
    System.out.println(Arrays.toString(arr)); //[1, 2, 3, 4, 5]
}

输出结果为[1, 2, 3, 4, 5],证明我们编写的程序是正确的。

总结:

本文利用Java函数实现了快速排序算法,其中partition函数用于将数组分成两个部分,quickSort函数用于递归地对数组进行排序。快速排序算法比较高效,其时间复杂度为O(nlogn),适用于大规模数据的排序。