题目描述
输入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
代码:
import java.util.Scanner;
//java - 绝对值排序 HDU - 2020
public class Main {
public int[] absoluteValueSorting(int[] a) {
int[] result=new int[a.length-1] ;
for(int i=1;i<a.length;i++) {
for(int j=a.length-1;j>i;j--) {
int k1=a[i];
int k2=a[j];
if(a[i]<0) {
a[i]=-a[i];
}
if(a[j]<0) {
a[j]=-a[j];
}
if(a[i]<a[j]) {
a[i]=k2;
a[j]=k1;
}else {
a[i]=k1;
a[j]=k2;
}
}
}
for(int i=0;i<a.length-1;i++) {
result[i]=a[i+1];
}
return result;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
Main m=new Main();
while(in.hasNext()) {
int n=in.nextInt();
if(n!=0&&0<n&&n<=100) {
int[] a=new int[n+1] ;
a[0]=n;
for(int i=1;i<a.length;i++) {
a[i]=in.nextInt();
}
int[] result=m.absoluteValueSorting(a);
for(int v:result) {
System.out.print(v+" ");
}
System.out.println();
}
}
}
}