为什么我的基数排序错了呢?
还有它的复杂度应该远比O(n)高吧
// 语言C++
#include<iostream>
#include<vector>
using namespace std;
int n;
int a[100005];
vector<int> v[100005];
int bit(int n)
{
int ans=0;
while(n)
{
ans++;
n/=10;
}
return ans;
}
int maxbit()
{
int ans=-1;
for(int i=1;i<=n;i++)
{
int temp=a[i];
int k=bit(a[i]);
if(k>ans) ans=k;
}
return ans;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int u=1;u<=maxbit();u++)
{
for(int i=1;i<=n;i++)
{
int k;
int temp=a[i];
for(int j=1;j<=u;j++)
{
k=temp%10;
temp/=10;
}
v[k].push_back(a[i]);
}
int cnt=0;
for(int i=1;i<=n;i++)
{
int p=0;
while(p+1<=v[i].size()) a[++cnt]=v[i][p++];
}
}
for(int i=1;i<=n;i++) cout<<a[i]<<endl;
return 0;
}