c++桶排序

  • 描述
    利用桶排序给n个数排序
  • 输入描述
    第一行n
    第二行,n个数
  • 输出描述
    排序后的n个数

桶排序(v1.0)思路:

  1. 统计这些数据的出现次数
  2. 输出这个数据它的出现次数次

桶排序(v2.0)思路:

  1. 把数据分到一些“桶”里
  2. 对这些桶分别排序
  3. 将这些桶里的元素合起来就是排序后的数组

代码来啦(v1.0)

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,mx=0,bucket[1000005]={};
    cin>>n;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        bucket[x]++,mx=max(mx,x);
    }
    for(int i=0;i<=mx;i++)
        while(bucket[i]--)
            cout<<i<<" ";
    return 0;
}

代码又双叒叕来啦(v2.0)

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    int a[n]={},mx=INT_MIN,mn=INT_MAX;
    for(int i=0;i<n;i++){
        cin>>a[i];
        mx=max(mx,a[i]),mn=min(mn,a[i]);
    }
    int bucketn=(mx-mn)/n+1;
    vector<vector<int> > v(bucketn);
    for(int i=0;i<n;i++){
        int num=(a[i]-mn)/n;
        v[num].push_back(a[i]);
    }
    for(int i=0;i<bucketn;i++)
        sort(v[i].begin(),v[i].end());
    vector<int>ans;
    for(auto i:v)
        for(int j:i)
            ans.push_back(j);
    for(int i:ans)
        cout<<i<<" ";
    return 0;
}

posted on 2024-04-06 07:08  可爱楷玩算法  阅读(117)  评论(0)    收藏  举报

导航