如题。我对桶排进行了研究,并且改成了两种形式,经测试,他们都有排序的效果:
形式1(经典桶排优化):
#include<bits/stdc++.h>
using namespace std;
int k,b[10005],mx=-65535,n;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>k;
if(k>mx)mx=k;
b[k]++;
}
for(int i=0;i<=mx;i++){
while(b[i]){
cout<<i<<' ';
b[i]--;
}
}
}
形式2(小数组优化):
#include<bits/stdc++.h>
using namespace std;
int a[10005],mx=-65535,n;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]>mx)mx=a[i];
}
for(int j=0;j<=mx;j++)
for(int i=0;i<n;i++)
if(a[i]==j)cout<<a[i]<<' ';
}
求教:这两种排序哪种更好用