以下是某年pj初赛的真题,本蒟蒻想问一个问题。
其中基数排序的主题代码如下:
int n;
int a[100];
vector<int>bin[100];
bool check()
{
for(int i=2;i<=n;i++)
if(a[i]<a[i-1])
return false;
return true;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
bin[a[i]%10].push_back(a[i]);
}
while(check()==false)
{
int k=0;
for(int i=0;i<=9;i++)
for(int j=0;j<bin[i].size();j++)
a[++k]=bin[i][j];
for(int i=0;i<=9;i++)
bin[i].clear();
}
return 0;
}
而桶排序的主题代码如下:
int n;
int max_num=-100000,min_num=1e9;
int a[100];
int b[100];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
b[a]++;
max_num=max(max_num,a);
min_num=min(min_num,a);
}
for(int i=min_num;i<=max_num;i++)
{
for(int j=1;j<=b[i];j++)
{
cout<<i<<" ";
}
}
return 0;
}
似乎基数排序和桶排序都没有用到关键字比较操作呀呀呀,但是为什么标准答案只认基数排序,我选了桶排序就算错?还请打咯啊帮忙解释一下qwq。