JAVA快速排序

来源:互联网 发布:淘宝网商城玉镯 编辑:程序博客网 时间:2024/05/19 11:39
package com.tangbaoabo.Sort;


public class QuicklySort {
public static void main(String[] args) {
int[] a= {1,5,6,8,10,9,3};
quickSort(a);
for (int i : a) {
System.out.println(i);
}
}



//快速排序方法
public static int[] quickSort(int[] arr){
    qsort(arr, 0, arr.length-1);
    return arr;
}
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){
        while (low<high && arr[high]>=pivot) {
        --high;
        }
        arr[low]=arr[high];             //交换比枢轴小的记录到左端
        while (low<high && arr[low]<=pivot) {
        ++low;
        }
        arr[high] = arr[low];           //交换比枢轴小的记录到右端
    }
    //扫描完成,枢轴到位
    arr[low] = pivot;
    //返回的是枢轴的位置
    return low;
}


}
原创粉丝点击