Open ghost opened 3 years ago
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); int n; while(cin>>n&&n!=0) { int arr[n+1]={};//原数组 int ans[n+1]={};//待装数组 memset(arr,0,sizeof(ans)); int rus[n+1]={};//最终数组 for(int i=1;i<=n;i++)cin>>arr[i]; int Min=10000001,Max=0; for(int i=1;i<=n;i++) //遍历找最大最小 { if(Max<arr[i])Max=arr[i]; if(Min>arr[i])Min=arr[i]; } int lenth=Max-Min; //区间长度 for(int i=1;i<=lenth;i++)//计数 { for(int j=1;j<=n;j++) { if(arr[i]==arr[j]) //遍历 { ans[i]++; //记频率 } } } for(int i=2;i<=lenth;i++)//计算前缀和 { ans[i]=ans[i-1]+ans[i]; } for(int i=n;i>=1;i--) //计数排序最后一步 { int temp; temp=ans[arr[n]-lenth]-1; rus[temp]=arr[i]; } for(int i=1;i<=n;i++) //输出结果 { if(i==n)cout<<rus[i]<<endl; else cout<<rus[i]<<" "; } } return 0; }
找不到BUG ,输出全部转为了0
输出全部转为0,是说打印输出的结果都是零嘛。