题目描述
输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
输入描述
输入包含三行,
第一行包含两个正整数n, m(1 ≤ n,m ≤ 100),用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。
第二行包含n个整数(范围1~5000),用空格分隔。
第三行包含m个整数(范围1~5000),用空格分隔。
输出描述
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
示例1
输入
5 6
1 3 7 9 22
2 8 10 17 33 44
输出
1 2 3 7 8 9 10 17 22 33 44
代码实现
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] list = in.readLine().split(" ");
String[] flist = in.readLine().split(" ");
String[] slist = in.readLine().split(" ");
//先将两个升序序列合并为一个序列
int n = Integer.valueOf(list[0]);
int m = Integer.valueOf(list[1]);
int[] newlist = new int[n+m];
for(int i=0;i<n;i++){
newlist[i] = Integer.valueOf(flist[i]);
}
for(int j=0;j<m;j++){
newlist[n+j] = Integer.valueOf(slist[j]);
}
//对新序列进行排序,冒泡排序
for(int i=1;i<n+m;i++){
for(int j=0;j<n+m-i;j++){
if(newlist[j]>newlist[j+1]){
int temp = newlist[j];
newlist[j] = newlist[j+1];
newlist[j+1] = temp;
}
}
}
//输出新序列,用空格分隔
for(int i=0;i<n+m;i++){
System.out.print(newlist[i]+" ");
}
System.out.println();
}
}