java 快速排序

来源:互联网 发布:手机版淘宝怎么买彩票 编辑:程序博客网 时间:2024/06/05 07:28
public static void quickSort(int[] arr){        qsort(arr, 0, arr.length-1);    }    private static void qsort(int[] arr, int low, int high){        if (low < high){            int pivot=partition(arr, low, high);        //将数组分为两部分            qsort(arr, low, pivot-1);                   //递归排序左子数组            qsort(arr, pivot+1, high);                  //递归排序右子数组        }    }    private static int partition(int[] arr, int low, int high){        int pivot = arr[low];     //枢轴记录        while (low<high){            System.out.println("low: "+low+" high: "+high);            while (low<high && arr[high]>=pivot) --high;            arr[low]=arr[high];             //交换比枢轴小的记录到左端            while (low<high && arr[low]<=pivot) ++low;            arr[high] = arr[low];           //交换比枢轴小的记录到右端        }        System.out.println(arr[low]);        //扫描完成,枢轴到位        arr[low] = pivot;        //返回的是枢轴的位置        return low;    }