快速排序的Java实现(二路快排)

来源:互联网 发布:淘宝采集器有用吗 编辑:程序博客网 时间:2024/05/15 20:43

这里写图片描述
开始从一边遍历,如果遇到arr[i]>l,那么开始遍历另一边,知道另一边遇到arr[j]

/***快速排序,默认是l=0,r=arr.length-1*/ public static  void quickSort(int[] arr,int l,int r){        if(l < r){            int i = l,j = r,x = arr[l];            while(i<j){                while(i < j && arr[j] > x)                    j--;                if(i < j){                    arr[i++] = arr[j];                    /**                     * 首先执行arr[i] = arr[j]                     * 然后执行 i++                     */                }                while(i < j && arr[i] < x)                    i++;                if(i < j){                    arr[j --] = arr[i];                }            }            arr[i] = x;            quickSort(arr,l,i-1);            quickSort(arr,i+1,r);        }    }    public static void printSorted(int[] arr,int l,int r){        if(l==0 && r == arr.length - 1) {            test.quickSort(arr,l,r);        }else{            System.out.println("输入的参数不合法");            return ;        }        for(int i = 0;i<arr.length;i++){            System.out.println(arr[i]);        }    }
原创粉丝点击