【18年扬大真题】
给定有m个整数的递增有序数组a和有n个整数的递减有序数组b,
将a数组和b数组归并为递增有序的数组c。
void Merge(int arr[],int m ,int brr[],int n,int crr[]) {int i = 0;int j = n-1;int k = 0;while(i < m&&j >= 0) {if (arr[i] < brr[j]) {crr[k] = arr[i];i++;k++;}else {crr[k] = brr[j];j--;k++;}}//把a或b剩下的接到c上去while(i < m) {crr[k] = arr[i];i++;k++;}while(j >= 0) {crr[k] = brr[j];j--;k++;}
}
int main()
{int a[20] = { 0 };//默认最大不超过20int b[20] = { 0 };int c[40] = { 0 };int m = 0;int n = 0;int i = 0;printf("请输入a数组大小:");scanf("%d", &m);printf("请输入递增有序的a数组数据:");for (i = 0;i < m;i++) {scanf("%d", &a[i]);}printf("请输入b数组大小:");scanf("%d", &n);printf("请输入递减有序的b数组数据:");for (i = 0;i < n;i++) {scanf("%d", &b[i]);}Merge(a,m,b,n,c);printf("合并后的数组c为:");for (i = 0;i < m + n;i++) {printf("%d ", c[i]);}
}