二分排序

找一个基准值,比他小的放在他左边,比他大的放在他右边,第一遍结束的结果就是这样,然后对两部分递归

        if(l<r){
            int i=l,j=r,tem=a[i];
            while (i < j){
                while (i<j && a[j]>=tem){
                    j--;
                }
                if(i < j){
                    a[i ++] =  a[j];
                }
                while (i<j && a[i] < tem){
                    i ++;
                }
                if(i < j){
                    a[j--] = a[i];
                }
            }
            a[i] = tem;
            sort(a,l,i-1);
            sort(a,i+1,r);
        }
    }

 

posted @ 2020-03-26 17:13  nlw  阅读(140)  评论(0编辑  收藏  举报