题解 | #有序序列合并#
有序序列合并
https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897
#include <stdio.h> /*/int main() { int n = 0;//第一个序列的个数 int m = 0;//第二个序列的个数 scanf("%d %d",&n,&m); int arr1[n]; int arr2[m]; int i = 0; for(i = 0;i<n;i++) { scanf("%d",&arr1[i]);//输入第一个序列的元素 } for(i = 0;i<m;i++) { scanf("%d",&arr2[i]);//输入第二个序列的元素 } //合并打印 int j = 0; int k = 0; while(j<n&&k<m) { if(arr1[j]<arr2[k]) { printf("%d ",arr1[j]); j++; } else { printf("%d ",arr2[k]); k++; } } if(j<n) { for(;j<n;j++) { printf("%d ",arr1[j]); } } else { for(;k<m;k++) { printf("%d ",arr2[k]); } } return 0; } /*/ int main() { int n = 0;//第一个序列的个数 int m = 0;//第二个序列的个数 scanf("%d %d",&n,&m); int arr1[n]; int arr2[m]; int arr3[m+n]; int i = 0; for(i = 0;i<n;i++) { scanf("%d",&arr1[i]);//输入第一个序列的元素 } for(i = 0;i<m;i++) { scanf("%d",&arr2[i]);//输入第二个序列的元素 } //合并打印 int j = 0; int k = 0; int r = 0; while(j<n&&k<m) { if(arr1[j]<arr2[k]) { arr3[r++] = arr1[j]; j++; } else { arr3[r++] = arr2[k]; k++; } } if(j<n) { for(;j<n;j++) { arr3[r++] = arr1[j]; } } else { for(;k<m;k++) { arr3[r++] = arr2[k]; } } for(i = 0;i<m+n;i++) { printf("%d ",arr3[i]); } return 0; }