随机快排

  1. 随机快排

随机快排

public class test_quickSort {
    public static void main(String[] args){
        int[] arr = new int[] {7,3,5,8,6,4,3,2,1,6};
        quickSort(arr);


    }
    public static void printArray(int[] arr){
        for(int i = 0; i < arr.length; i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }

    public static void quickSort(int[] arr){
        if (arr == null && arr.length < 2) {
            return;
        }
        quickSort(arr,0,arr.length-1);
    }

    public static void quickSort(int[] arr, int l, int r){
        if(l < r){
             swap(arr,l + (int)((r-l+1)*Math.random()), r);
            System.out.println("partition_number="+arr[r]);
             int[] p = partition(arr,l,r);
            System.out.println("---------");
             printArray(arr);
            System.out.println("---------");
             quickSort(arr,l,p[0]-1);
             quickSort(arr,p[1]+1,r);
        }
    }
    public static int[] partition(int[] arr, int l, int r){
        int less = l - 1;
        int more = r;
        while (l < more) {
            if(arr[l] < arr[r]){
                swap(arr,++less,l++);
            } else if(arr[l] > arr[r]){
                swap(arr,--more,l);
            } else {
                l++;
            }
        }
        swap(arr,more,r);
        return new int[] {less+1,more};
    }
    public static void swap(int[] arr, int i, int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 876208453@qq.com

文章标题:随机快排

本文作者:Cai Jun

发布时间:2019-04-02, 14:19:40

最后更新:2019-04-02, 02:21:24

原始链接:http://johncaijun.github.io/2019-04-03-随机快排/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏