杭电 2020 绝对值排序

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

int n;

int set[110]={0},a[110]={0},b[110]={0};

int cmp(const void *a,const void *b)

{

    return *(int *)b-*(int *)a;

}

int main()

{

     while(scanf("%d",&n),n)

     {

         for(int i=1;i<=n;i++)

         {

             scanf("%d",&set[i]);

             a[i]=abs(set[i]);

         }

         qsort(a+1,n,sizeof(a[0]),cmp);

         for(int i=1;i<=n;i++)

         {

              for(int j=1;j<=n;j++)

              {

                  if(abs(set[j])==a[i])

                  {

                      b[i]=set[j];

                      break;

                  }

              }

         }

         for(int i=1;i<=n;i++)

         {

             if(i==1)

                printf("%d",b[i]);

             else

                printf(" %d",b[i]);

         }

         printf("\n");

     }

    // system("pause");

     return 0;

}

你可能感兴趣的:(排序)