SDJZU_新生_排序_绝对值排序(sort方法)

来源:互联网 发布:淘宝客推广有效果吗 编辑:程序博客网 时间:2024/06/18 03:26
  • LOGOUT

    • UPDATE
每一道题除了用sort排序之外,至少得用另外两种效率高的排序算法做出来,今天的题不是为了AC,是为了掌握各种排序。
SDJZU_新生_排序
2:39:42
15:00:00
  • Overview
  • Problem
  • Status
  • Rank (48)
Current Time: 2015-01-26 11:17:41Contest Type: PrivateStart Time: 2015-01-26 08:38:00Contest Status: RunningEnd Time: 2015-01-26 23:38:00Manager: ACboy
C - 绝对值排序
Crawling in process...Crawling failedTime Limit:1000MS    Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
SubmitStatus

Description

输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。
 

Input

输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。
 

Output

对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。
 

Sample Input

3 3 -4 24 0 1 2 -30
 

Sample Output

-4 3 2-3 2 1 0
        
#include<stdio.h>#include<algorithm>using namespace std;struct A{    int a,b;}e[1007];int cmp(A a,A b){    return a.b>b.b;}int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        if(n==0)        {            break;        }        A e[1007];        int i;        for(i=0;i<n;i++)        {            scanf("%d",&e[i].a);            if(e[i].a<0)            {                e[i].b=-e[i].a;            }            else e[i].b=e[i].a;        }        sort (e,e+n,cmp);        for(i=0;i<n;i++)        {            printf("%d",e[i].a);            if(i!=n-1)            {                printf(" ");            }        }        printf("\n");    }    return 0;}


Rank Setting
0 0
原创粉丝点击