#include <stdio.h> int main() { int m, n, i, j, k; int arr1[1000] = {0}; int arr2[1000] = {0}; int arr3[1000] = {0}; //用新数组来记录合并后的序列,初值为0 scanf("%d %d\n", &m, &n); for(i=0; i<m; i++) scanf("%d ", &arr1[i]); //输入第一个有序序列 for(i=0; i<n; i++) scanf("%d ", &arr2[i]); //输入第二个有序序列 i = 0, j = 0; //一定一定要记得重置为0 while(i<m && j<n) { //两个数组依次出一个数比较,较小的就放到新数组中, if(arr1[i] <= arr2[j]) arr3[k++] = arr1[i++]; //新数组与较小数数组下标均后移一位 else arr3[k++] = arr2[j++]; } while(i<m) //第一个数组还有没比较完的数时 arr3[k++] = arr1[i++]; //直接全部复制到新数组中去 while(j<n) arr3[k++] = arr2[j++]; //同理,若有没比较完的,直接复制过去 for(i=0; i<m+n; i++) printf("%d ", arr3[i]); //打印新数组元素 return 0; }