EECNU 2031 绝对值排序
链接
https://acm.ecnu.edu.cn/problem/2031
题目
单点时限: 2.0 sec
内存限制: 256 MB
给你 个数,要求你把这 个数按照绝对值从小到大排序。
多 ,处理直到文件结束。
输入格式
输入一个数 n,接下来一行是n 个整数 。
输出格式
排序后按照绝对值从小到大输出 n 个数,输出一行,每两个数字之间有个空格,最后一个数字后面没空格。
样例
input
4
-3 -4 1 2
1
10
output
1 2 -3 -4
10
思路
正常的输入排序,只需要在排序的时候用绝对值进行即可,用数组或者线性表都行。
代码
public static void fun() {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
int t = sc.nextInt();
list.add(t);
}
list.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int a = Math.abs(o1);
int b = Math.abs(o2);
return a - b;
}
});
for (int i=0;i<n;i++)
{
System.out.print(list.get(i));
if(i!=n-1)
{
System.out.print(" ");
}
}
System.out.println();
}
}