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

使用Java实现快速排序算法的函数代码

发布时间:2023-06-25 13:51:25

快速排序是一种常见的排序算法,它的时间复杂度为O(nlogn),相对于其他排序算法具有较好的效率和性能。在Java中,我们可以通过编写以下代码来实现快速排序。

public static void quickSort(int[] arr, int left, int right) {
    if (left >= right) {
        return; // 左指针大于右指针,停止递归
    }

    int i = left; // 左指针
    int j = right; // 右指针
    int pivot = arr[left]; // 设置基准值为数组的      个元素

    while (i < j) {
        // 从右往左找小于基准值的元素
        while (i < j && arr[j] >= pivot) {
            j--;
        }
        // 从左往右找大于基准值的元素
        while (i < j && arr[i] <= pivot) {
            i++;
        }
        // 如果左指针小于右指针,则交换i和j所指向的元素
        if (i < j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    // 最后交换基准值和左指针所指向的元素
    arr[left] = arr[i];
    arr[i] = pivot;

    // 递归排序左半部分和右半部分
    quickSort(arr, left, i - 1);
    quickSort(arr, i + 1, right);
}

在这段代码中,我们首先判断左指针是否大于等于右指针,如果是则停止递归排序。接着,我们设置左指针为数组的 个元素,右指针为数组的最后一个元素,并设置基准值为数组的 个元素。

之后,我们在数组中从右往左找小于基准值的元素,并在数组中从左往右找大于基准值的元素,如果左指针小于右指针,则交换i和j所指向的元素。最后,我们交换基准值和左指针所指向的元素,并对左半部分和右半部分分别递归进行快速排序。

通过以上代码的实现,我们可以将一个无序的整型数组进行排序,并且时间复杂度为O(nlogn),具有较高的排序效率和性能。