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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了---------快排-----表排-----基数排序(桶排序)-----相关的知识,希望对你有一定的参考价值。

其思想就是  在  一堆数字里面找一个  枢纽数字   然后将数字分成了两堆      ,   一个大于该数字,一个小于该数字.  然后去递归的治理   最后合并一下就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];
}

 

第二步  子集划分

 

以上是关于---------快排-----表排-----基数排序(桶排序)-----的主要内容,如果未能解决你的问题,请参考以下文章

十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数-1

八大排序算法Java实现(下)-快排归排基数排序

你所知道的十大排序算法的总结(冒泡,选择,插入,希尔,归并,快排,堆排序,计数排序,桶排序,基数排序)

6.比较排序之快速排序

快速入手八大排序,带你从入门到精通

排序算法(快速排序)