volmodaoist / STUACM

STUACM专题笔记+提问答疑板块
6 stars 0 forks source link

UVA11462 Age sort :计数排序 #4

Open ghost opened 3 years ago

ghost commented 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;
}
ghost commented 3 years ago

找不到BUG ,输出全部转为了0

volmodaoist commented 3 years ago

找不到BUG ,输出全部转为了0

输出全部转为0,是说打印输出的结果都是零嘛。