题解 | #有序序列合并#
有序序列合并
https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int n, m; int arr1[1000] = { 0 };//用包含 1000 个整数的数组初始化第一个升序序列 int arr2[1000] = { 0 };//用包含 1000 个整数的数组初始化第二个升序序列 scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) {//输入第一个升序序列数组 scanf("%d", &arr1[i]); } for (int i = 0; i < m; i++){//输入第二个升序序列数组 scanf("%d", &arr2[i]); } int a = 0; int b = 0; //每次打印1个数,共n+m个数,于是用for循环打印n+m次 for (int i = 0; i < n + m; i++) { //当第一个升序数组和第二个升序数组里还有数没用完时,比较大小并打印 //(因为包含 1000 个整数的数组在第n/m个数后会变为零,所以要判断a是否小于n-1) if ((a <= (n-1)) && (b <= (m-1))){ if(arr1[a] < arr2[b]){ printf("%d ", arr1[a]); a++; } else{ printf("%d ", arr2[b]); b++; } } //当第一个升序数组用完,第二个升序数组里没用完时,打印第二个升序数组 else if((a > (n-1)) && (b <= (m-1))) { printf("%d ", arr2[b]); b++; } else if ((a <= (n-1)) && (b > (m-1))) { printf("%d ", arr1[a]); a++; } } return 0; } //如果看不懂就用编译软件调试并监视看一下过程