---------快排-----表排-----基数排序(桶排序)-----

其思想就是  在  一堆数字里面找一个  枢纽数字   然后将数字分成了两堆      ,   一个大于该数字,一个小于该数字.  然后去递归的治理   最后合并一下就OK了.

---------------附上一个极为简陋的代码-------------------

//   依然是  递归实现~~~好恶心.
void Quicksort( ElementType A[], int N )
{
    if(N<2) 
         return;
    pivot =  从A[] 中选一个主元;             //主元选择的要恰当.
    将S = { A[]  pivot }  分成2 个独立子集:     
        A1={a∈S|a<=pivot } 和 和
        A2={a∈S|a>=pivot };
    A[] = Quicksort(A1,N1)
        {pivot}
    Quicksort(A2,N2);
}

在我们去  取主元的话 我们经常是 去    头中尾   这三个数字之中的中位数.

 第一步  筛选主元

ElementType Median3(ElementType A[],int left,int right)
{
    int center=(left+right)/2;
    if(A[left])>A[center])
        swap(A[left},A[center]);
    if(A[left]>A[right])
        swap(A[left],A[Right]);
    if(A[center]>A[right])
        swap(A[center],A[right]);
    swap(A[center],A[right]);       //这样 最后两个数字有序了.
    //只需要考虑 A[left+1]-A[righ-2]  就可以了.
    return A[right-1];
}

第二步  子集划分

原文地址:https://www.cnblogs.com/A-FM/p/5163735.html