HDU2020 绝对值排序

#include<stdio.h>                      
#include<math.h>                       
void quick(int *a,int i,int j)         
{                                      
int m,n,temp;                          
int k;                                 
m=i;                                   
n=j;                                   
k=fabs(a[(i+j)/2]);                    
do {                                   
while(fabs(a[m])>k&&m<j) m++;          
while(fabs(a[n])<k&&n>i) n--;          
if(m<=n) {                             
                                       
temp=a[m];                             
a[m]=a[n];                             
a[n]=temp;                             
m++;                                   
n--;                                   
}                                      
}while(m<=n);                          
if(m<j) quick(a,m,j);                  
if(n>i) quick(a,i,n);                  
}                                      
                                       
int main()                             
{                                      
  int a[10010],n,i;                    
  while(~scanf("%d",&n))               
  { 
    if(n==0);else{                                   
      for(i=1;i<=n;i++)                   
      {                                   
      scanf("%d",&a[i]);                           
    }                                  
    quick(a,1,n);                      
    for(i=1;i<=n;i++)                  
    {                                  
        if(i==1)printf("%d",a[i]);        
        else                              
         printf(" %d",a[i]);                 
    }                                  
    printf("\n");
    }
  }                                    
  return 0;                            
}                             


绝对值排序

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 49496    Accepted Submission(s): 23842


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

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

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

Sample Input
  
  
3 3 -4 2 4 0 1 2 -3 0
 

Sample Output
  
  
-4 3 2 -3 2 1 0
 

Author
lcy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值