美文网首页
递归版快排

递归版快排

作者: YAOPRINCESS | 来源:发表于2020-07-07 23:50 被阅读0次

    完整代码

    package Sort;
    
    /**
     * @author klr
     * @create 2020-07-07-21:37
     */
    public class QuickSort {
    
        public static void main(String[] args) {
    
            QuickSort quickSort = new QuickSort();
            int[] array=new int[]{3,6,5,1,7,2,0,9};
            quickSort.DigAHoleToFillTheNumber(array,0,array.length-1);
            for (int i : array) {
                System.out.print(i+" ");
            }
        }
    
        public void DigAHoleToFillTheNumber(int[] array, int left, int right){
            //出口一定要写
            if(array==null||left>=right)
                return;
            int l=left;
            int r=right;
            int temp=array[left];//把最左边的当作pivot
            while (l < r) {
                while (l < r && array[r] >= temp) {
                    r--;
                }
                //找到了比piovt小的
                if (l < r) {
                    array[l++]=array[r];//i++,此时i还等于left,先把left用了,right已经空出了
                }
                while (l < r && array[l] <= temp) {
                    l++;
                }
                if (l < r) {
                    array[r--]=array[l];
                }
            }
            //填坑
            array[l]=temp;
            //递归
            DigAHoleToFillTheNumber(array,left,l-1);
            DigAHoleToFillTheNumber(array,l+1,right);
    
        }
    }
    

    相关文章

      网友评论

          本文标题:递归版快排

          本文链接:https://www.haomeiwen.com/subject/ebhtcktx.html