Problem Description
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。
Input
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。
Output
对于每个测试实例,输出插入新的元素后的数列。
Sample Input
3 3
1 2 4
0 0
Sample Output
1 2 3 4
题目思路:
使用数组可以解决,不过需要排列位置,这里使用了ArrayList来解决,挨个比较,碰到比目标数字大的停下,在这个位置使用add(index,value)插入。
代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test_6_Sort {
private static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
String line1 = in.nextLine();
int n,m;
n = Integer.valueOf(line1.split(" ")[0]) ;
m = Integer.valueOf(line1.split(" ")[1]) ;
if (n==0&&m==0) {
return;
}
sort(n,m);
}
private static void sort(int n, int m) {
List<Integer> val = new ArrayList<Integer>();
String line2 = in.nextLine();
String[] tmp = line2.split(" ");
if (tmp.length==n) {
for (int i = 0; i < tmp.length; i++) {
val.add(Integer.valueOf(tmp[i]));
}
}
for (int i = 0; i < val.size(); i++) {
if (m<=val.get(i)) {
val.add(i, m);
break;
}
}
for (int i = 0; i < val.size(); i++) {
System.out.print(val.get(i)+"\t");
}
}
}