zoukankan      html  css  js  c++  java
  • 排序(六)非比较排序

    1.计数排序

    void CountSort(vector<int>& Vector)
        {
            int max = Vector[0], min = Vector[0];
            for (int i = 0; i < Vector.size(); ++i)
            {
                if (Vector[i]>max)
                    max = Vector[i];
                else if (Vector[i] < min)
                    min = Vector[i];
            }
            int size = max - min + 1;
            vector<int> tmp;
            tmp.resize(size);
            for (int i = 0; i < Vector.size(); ++i)    //利用新数组来记录数据,空间复杂度为O(N)
                tmp[Vector[i] - min]++;
            int index = 0;
            for (int i = 0; i < tmp.size(); ++i)
            while (tmp[i]--)
                Vector[index++] = min + i;
        }

    2.基数排序

    void BaseSort(vector<int>& Vector)
        {
            int MaxPosition = 1;
            int Data = 10;
            for (int i = 0; i < Vector.size(); ++i)
            {
                if (Vector[i] >= Data)
                {
                    MaxPosition++;
                    Data *= 10;
                }
            }
    
            vector<int> Count;    //计数数组
            vector<int> Start;    //计起始位置的数组
            vector<int> Zero;     //初始化数组
            Zero.resize(10);
            vector<int> Tmp;      //计排每一次的情况
            Tmp.resize(Vector.size());  
            Data = 1;
            for (int i = 0; i < MaxPosition; ++i)
            {
                Count = Zero;
                Start = Zero;
    
                for (int i = 0; i < Vector.size(); ++i)
                    Count[Vector[i] / Data % 10]++;
                for (int i = 1; i < 10; ++i)
                    Start[i] = Start[i - 1] + Count[i - 1];
                for (int i = 0; i < Vector.size(); ++i)
                {
                    int index = Start[Vector[i] / Data % 10]++;
                    Tmp[index] = Vector[i];
                }
                Vector = Tmp;
                Data *= 10;
            }
        }
  • 相关阅读:
    Json对象和字符串互转
    JSNOP调用。。。
    org.hibernate.LazyInitializationException: could not initialize proxy no Session
    myeclipse生成注解实体
    jquery判断浏览器和版本
    JSTL XML标签库
    ORACLE 月份不全,补全月份的sql
    js 上下左右键控制焦点
    google gson使用
    js判断undefined类型
  • 原文地址:https://www.cnblogs.com/shihaochangeworld/p/5590583.html
Copyright © 2011-2022 走看看