• c++计数排序例子


    #include<iostream>
    #include<vector>
    using namespace std;
    //计数排序
    void CountSort(vector<int> &arr,int maxVal){
    int len = arr.size();
    if(len<1){
    return;
    }
    vector<int> count(maxVal+1,0);//辅助计数数组
    vector<int> tmp(arr);//辅助数组
    for(auto x : arr){//对每个数字出现了几次进行计数
    count[x]++;
    }
    for(int i=1;i<=maxVal;++i){//对于每个元素x,计算出比x小和它自己相等的元素的个数
    count[i]+=count[i-1];
    }
    for(int i=len-1;i>=0;--i){//将对应的值放到相对应数组下标的地方
    arr[count[tmp[i]]-1]=tmp[i];
    count[tmp[i]]--;
    }


    }


    int main(){

    vector<int> arr = { 1,5,3,7,6,2,8,9,4,3,3 };
    int maxVal=9;
    CountSort(arr,maxVal);
    for(auto x : arr){
    cout<<x<<" ";
    }

    cout<<endl;
    return 0;
    }

  • 相关阅读:
    最小路径
    零钱兑换
    硬币
    三步问题
    区域和检索
    除数博弈
    URI和URL的辨别
    交叉编译OpenMP
    牛客挑战赛44D-数列的和
    CF1408H. Rainbow Triples
  • 原文地址:https://www.cnblogs.com/xufeng123/p/12628683.html
Copyright © 2020-2023  润新知