排序算法——快速排序 java实现

算法分析

每次通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

时间复杂度

平均 O(nlogn) ,最差是 O(n^2)

代码实现

java实现

private static int getMiddle(int[] arr, int low, int high){

        int temp = arr[low];
        while (low < high){
            while (low < high && arr[high] >= temp){
                high--;
            }
            arr[low] = arr[high];
            while (low < high && arr[low] <= temp){
                low++;
            }
            arr[high] = arr[low];
        }
        arr[low] = temp;
        //System.out.println(low + ", " + high);

        return low;
    }

    private static void quickSort(int[] arr, int low, int high){

        if(low < high){
            int middle = getMiddle(arr, low, high);
            quickSort(arr, 0, middle - 1);
            quickSort(arr, middle + 1, high);
        }
    }


    public static void main(String[] args){

        int[] arr = {2, 5, 1, 4, 8};
        quickSort(arr, 0, arr.length - 1);
        for(int i = 0; i < arr.length; i++){
            System.out.println(arr[i]);
        }
    }

参考

https://blog.csdn.net/nrsc272420199/article/details/82587933

你可能感兴趣的:(Data,structure)