题解 | #有序序列合并#
有序序列合并
https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897
#include <stdio.h> //合并数组 //思路:先从头开始比较两个数组的大小,先打印小的,小的下标加一,大的下标不变 void merge(int a[], int b[],int x,int y) { int i = 0; int j = 0; while (i < x && j < y) { if (a[i] > b[j]) { printf("%d ", b[j]); j++; } else { printf("%d ",a[i]); i++; } //打印剩下的数 //判断谁先打印完 if (j < y && i == x) { for (int k = j; j < y; j++) { printf("%d ", b[j]); } } if (i < x && j == y) { for (int k = i; i < x; i++) { printf("%d ", a[i]); } } } } int main() { int a[1000] = { 0 }; int b[1000] = { 0 }; int x = 0; int y = 0; scanf("%d", &x); scanf("%d", &y); for (int i = 0; i < x; i++) { scanf("%d", &a[i]); } for (int j = 0; j < y; j++) { scanf("%d", &b[j]); } merge(a, b, x, y); return 0; }