码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-01-27 17:02:14      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

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

 

第二步  子集划分

 

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

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!