c++桶排序
- 描述
利用桶排序给n个数排序 - 输入描述
第一行n
第二行,n个数 - 输出描述
排序后的n个数
桶排序(v1.0)思路:
- 统计这些数据的出现次数
- 输出这个数据它的出现次数次
桶排序(v2.0)思路:
- 把数据分到一些“桶”里
- 对这些桶分别排序
- 将这些桶里的元素合起来就是排序后的数组
代码来啦(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;
}
浙公网安备 33010602011771号