各位数字之和排序
题目:给定n个正整数,根据各位数字之和从小到大进行排序
输入:输入数据有多组,每组数据占一行,每行的第一个数正整数n(1<=n<=20),表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。每个整数的数字之和均不相同
输出:输出每组排序的结果
输入:
2 1 2 3 121 10 111 0
输出:
1 2 10 111 121
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); num[] a = new num[15]; num t = new num(); int n,i,j; for(i=0;i<15;i++) a[i] = new num(); while(cin.hasNextInt()) { n = cin.nextInt(); if(n==0) break; for(i=0;i<n;i++) { a[i].x = cin.nextInt(); a[i].b = a[i].f(); } for(i=0;i<n;i++) for(j=0;j<n-i-1;j++) if(a[j].b>a[j+1].b) { t = a[j]; a[j] = a[j+1]; a[j+1] = t; } for(i=0;i<n;i++) if(i==n-1) System.out.println(a[i].x); else System.out.print(a[i].x+" "); } cin.close(); } } class num { int x,b; int f() { int a = x,sum = 0; while(a!=0) { sum += a%10; a /= 10; } return sum; } }
数列有序
题目:有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序
输入:输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理
输出:对于每个测试实例,输出插入新的元素后的数列
输入:
3 3 1 2 4 0 0
输出:1 2 3 4
import java.util.Arrays; import java.util.Scanner; public class Main {public static void main(String[] args) { // TODO Auto-generated method stub @SuppressWarnings(“resource”) Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int n = sc.nextInt(); int m = sc.nextInt(); int arc[] = new int[n + 1]; if (n == 0 && m == 0) { System.exit(0); } arc[n] = m; for (int i = 0; i < n; i++) { arc[i] = sc.nextInt(); } Arrays.sort(arc); for (int i = 0; i < n + 1; i++) { if (i == 0) { System.out.print(arc[i]); } else System.out.print(" " + arc[i]); } System.out.println(); } } }