C++两个有序整形数组合并成一个有序数组

124 阅读1分钟

题目:在数组a和数组b中分别放入n和m个由小到大的有序整数,程序把两个数组中的数按由小到大的顺序归并到数组c中。

#include<stdio.h>
void scanfArrayItem(int arrayLength, int array[] );
void printArray(int array[] );

int main(){
    
    /* 数组a初始化 */
    printf("输入数组a长度");
    int alength;
    scanf("%d",&alength);
    int a[alength];

    // 输入数组a的值
    scanfArrayItem(alength, a);

    for(int i = 0;i < alength; i++){
        printf("%d ", a[i]);
    }
    printf( "\n");
    
    /* 数组b初始化 */
    printf("输入数组b长度");
    int blength;
    scanf("%d",&blength);
    int b[blength] = {};

    // 输入数组b的值
    scanfArrayItem(blength, b);
    for(int i = 0;i < blength; i++){
        printf("%d ", b[i]);
    }
    printf( "\n");

    // 排序到数组c
    int ai=0,bi=0;
    int c[alength+blength] = {};
    
    for(int i=0; i < alength+blength; i++){
        if(ai < alength && a[ai] < b[bi]){
            c[i] = a[ai];
            ai++;
        }else {
            c[i] = b[bi];
            bi++;
        }
    }
    printf( "数组c结果:\n");
    for(int i = 0;i < alength+blength; i++){
        printf("%d ", c[i]);
    }
    printf( "\n");
    
}
void scanfArrayItem(int arrayLength, int arr[] )
{

    // 循环输入数组的每个值
    for(int i = 0;i < arrayLength; i++) 
    {
        printf("输入数组[%d]的值", i);
        scanf("%d", &arr[i]);
    }
}