题目_数列有序

来源:互联网 发布:ios虚拟定位软件下载 编辑:程序博客网 时间:2024/05/29 14:54

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");        }    }}
原创粉丝点击