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


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

    第二步  子集划分

  • 相关阅读:
    C# 2.0 中Iterators的改进与实现原理浅析
    C#窗口关闭时最小化到托盘
    设计模式有趣解释
    序列化学习
    线程学习
    正则表达式
    .net内存回收与Dispose﹐Close﹐Finalize方法 [摘]
    5.匿名函数lambda
    2dns服务器解析创建
    2.ftp匿名
  • 原文地址:https://www.cnblogs.com/A-FM/p/5163735.html
Copyright © 2020-2023  润新知