快速排序

/**
 * 快速排序
 * @author Administrator
 *
 */
class Quicksort
{
     
    private int partition(int sortArray[],int low,int hight)
    {
        int key = sortArray[low];
         //判定条件必须小于 如果小于等于,跳出的时候low会大于hight
        //key的置换发生在low == hight中
        while(low<hight)
        {
            while(low<hight && sortArray[hight]>=key)
                hight--;
            sortArray[low] = sortArray[hight];
             
            while(low<hight && sortArray[low]<=key)
                low++;
            sortArray[hight] = sortArray[low];
        }
        sortArray[low] = key;
        return low;
    }
     
    public void sort(int low,int hight, int data[])
    {
        if(low<hight)
        {
            int result = partition(data,low,hight);
            sort(low,result-1, data);
            sort(result+1,hight,data);
        }
         
    }
     
    public void display(int data[])
    {
        for(int i=0;i<data.length;i++)
        {
            System.out.print(data[i]);
            System.out.print(" ");
        }
    }
    public static void main(String[] args) 
    {
        // TODO 自动生成方法存根
        Quicksort qs = new Quicksort();
        int data[] = {44,22,2,32,54,22,88,77,99,11};
        qs.sort(0, data.length-1, data);
        qs.display(data);
    }
}
原文地址:https://www.cnblogs.com/caobojia/p/6769302.html