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

使用Java函数快速排序算法

发布时间:2023-09-21 06:59:45

快速排序是一种常用的排序算法,它的基本思想是通过将数组分成两部分,再对每部分进行排序,最终将整个数组排序。具体实现时,我们选定一个基准元素,通过一趟排序将数组分成两部分,递归地对两部分进行排序,最终得到有序数组。

下面是使用Java函数实现快速排序算法的示例代码:

public class QuickSort {
    // 快速排序公共接口
    public static void quickSort(int[] arr) {
        if (arr == null || arr.length == 0) {
            return;
        }
        quickSort(arr, 0, arr.length - 1);
    }
    
    // 快速排序具体实现
    private static void quickSort(int[] arr, int start, int end) {
        if (start >= end) {
            return;
        }
        
        int pivot = partition(arr, start, end);   // 划分操作,返回基准元素位置
        quickSort(arr, start, pivot - 1);    // 对基准元素左边的部分进行排序
        quickSort(arr, pivot + 1, end);    // 对基准元素右边的部分进行排序
    }
    
    // 划分操作
    private static int partition(int[] arr, int start, int end) {
        int pivot = arr[start];     // 选定基准元素为起始元素
        int left = start;
        int right = end;
        
        while (left < right) {
            while (left < right && arr[right] >= pivot) {
                right--;
            }
            if (left < right) {
                arr[left] = arr[right];
                left++;
            }
            
            while (left < right && arr[left] <= pivot) {
                left++;
            }
            if (left < right) {
                arr[right] = arr[left];
                right--;
            }
        }
        
        arr[left] = pivot;   // 将基准元素放到最终位置
        return left;
    }
}

以上代码中,quickSort函数是快速排序的入口,它首先判断数组的合法性,然后调用具体的快排实现函数quickSort(arr, 0, arr.length - 1)进行排序。

quickSort函数中,partition函数用于执行划分操作,它选定起始元素作为基准元素 pivot,然后通过两个指针 leftright 分别从数组的两端向中间遍历,交换不符合要求的元素,直至两个指针相遇。最后将基准元素放到最终位置。然后,递归地对基准元素左边的部分和右边的部分进行排序,最终实现整个数组的排序。

使用这个快速排序函数,可以方便地对一个数组进行排序,时间复杂度为O(nlogn)。快速排序是一种非常高效的排序算法,在实际开发中经常使用。