[算法]快速排序


public class Solution {

    public static void quickSort(int a[],int l,int r)
    {
        if(l>=r)
        {
            return;
        }
        int i = l;
        int j = r;
        //选择第一个数为key
        int key = a[l];
        while (i<j) {
            //从右向左找第一个小于key的值
            while(i<j && a[j]>=key)
            {
                j--;
            }
            if(i<j)
            {
                a[i] = a[j];
                i++;
            }
            //从左向右找第一个大于key的值
            while (i<j && a[i]<key) {
                i++;
            }
            if(i<j)
            {
                a[j] = a[i];
                j--;
            }
        }
        a[i] = key;
        //递归调用
        quickSort(a, l, i-1);
        quickSort(a, i+1, r);

    }

}

你可能感兴趣的:(算法)