快速排序

public class Test1 {
    public static void main(String[] args) {
        Integer[] arr= {70,120,10,20,50,60,30,40,980};
        Test1 test1 = new Test1();
//        test1.maopao(arr);
        test1.kuaisu(arr, 0, arr.length-1);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }


    /**
     * 快速排序,二分法
     * @param arr
     */
    public void kuaisu(Integer[] arr,int low,int length) {
        int i,j,temp,t;
//        如果下标大于最大长度,跳出
        if(low>length) return;
        i=low;
        j=length;
//        基准位
        temp=arr[low];
//        循环
        while(i<j) {
            while(temp<=arr[j] && i<j) {
                j--;
            }
            while(temp>=arr[i] && i<j) {
                i++;
            }
            if (i<j) {
                t=arr[j];
                arr[j]=arr[i];
                arr[i]=t;
            }
        }
        arr[low]=arr[i];
        arr[i]=temp;
        kuaisu(arr, low, j-1);
        kuaisu(arr, j+1, length);
    }
}

原文地址:https://www.cnblogs.com/nnnnmmmm/p/11663512.html