题解 | #有序序列合并#
有序序列合并
https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897
#include <stdio.h> void Merge(int arr1[1000], int arr2[1000], int arr3[2000], int n, int m) { int i = 0; int j = 0; int k = 0; //进行合并 while ((i < n)&&(j < m)) { //比较大小 if (arr1[i] <= arr2[j]) { arr3[k++] = arr1[i++]; } else { arr3[k++] = arr2[j++]; } } if (i >= n) { while (j < m) { arr3[k++] = arr2[j++]; } } else { while (i < n) { arr3[k++] = arr1[i++]; } } } int main() { int m = 0; //第二行序列个数 int n = 0; //第一行序列个数 //输入 scanf("%d%d", &n, &m); int arr1[1000]; //数组1 int arr2[1000]; //数组2 int arr3[2000]; //整合数组 int i = 0; //初始化数组1 for (i = 0; i < n; i++) { scanf("%d", &arr1[i]); } //初始化数组2 for (i = 0; i < m; i++) { scanf("%d", &arr2[i]); } //合并数组 Merge(arr1, arr2, arr3, n, m); //输出 for (i = 0; i < (m+n); i++) printf("%d ", arr3[i]); return 0; }