-
数组排序
描述
给定一组n个正整数,根据各位数字之和从小到大进行排序。
输入
输入数据有多组,每组数据占一行,每行的第一个数正整数n,表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。
输出
输出每组要求下原始数据排序的结果。
样例输入
2 1 2
3 121 10 111
0
样例输出
1 2
10 111 121主要list的用法和使用。方法一:用数组/** * @(#)Array2.java * * * @author * @version 1.00 2014/5/9 */ import java.util.*; public class Array2 { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); while(n!=0) { Item[] a = new Item[n]; for(int i=0;i<n;i++) { a[i] = new Item(cin.nextInt()); } Arrays.sort(a); for(int i=0;i<n;i++) { System.out.print (a[i].x+" "); } System.out.println (); n = cin.nextInt(); } } } class Item implements Comparable <Item> { int x; int x_sum; public Item(int x) { this.x = x; int sum=0; while(x!=0) { sum+=x%10; x/=10; } this.x_sum = sum; } public int compareTo(Item t) { if(x_sum>t.x_sum) return 1; else if(x_sum<t.x_sum) return -1; else { if(x>t.x) return 1; else if(x<t.x) return -1; else return 0; } } }
方法二:用list容器/** * @(#)Array1.java * * * @author mair * @version 1.00 2014/5/9 */ import java.util.*; public class Array1 { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); while(n!=0) { ArrayList <Item> list = new ArrayList <Item>(); for(int i=0;i<n;i++) { list.add(new Item(cin.nextInt())); } Collections.sort(list); for(int i=0;i<n;i++) { System.out.print(list.get(i).x+" "); } System.out.println (); n = cin.nextInt(); } } } class Item implements Comparable <Item> { int x; int x_sum; public Item(int x) { this.x = x; int sum=0; while(x!=0) { sum+=x%10; x/=10; } this.x_sum = sum; } public int compareTo(Item t) { if(x_sum>t.x_sum) return 1; else if(x_sum<t.x_sum) return -1; else { if(x>t.x) return 1; else if(x<t.x) return -1; else return 0; } } }
JAVA容器练习
最新推荐文章于 2021-04-29 20:13:00 发布