天天看點

實驗報告->數組的定義和使用->兩路合并法合并兩個升序數組

#include <stdio.h>

//數組列印函數
void Print(int *x, int N)
{
    int i;
    for(i=; i<N; i++)
    {
        printf("%-3d", x[i]);
    }
    printf("\n");
}

//數組合并函數
void Merge_function(int *str1, int *str2)
{
    int M= ;
    int out[M];//輸出數組
    int i=, j=, k=;

    while (i< && j<){

        //循環将較小元素放入C
        if (str1[i]<str2[j])
        {
            out[k]=str1[i];
            i++;
            k++;
        }

        else{
            out[k]=str2[j];
            j++;
            k++;
        }
    }//while

    if(i==){

    //第1個數組元素已經全部放到C中,将第2個數組剩餘元素全放到C中
        while (j<)
        {
            out[k]=str2[j];
            k++;
            j++;
        }
    }

    if(j==){

    //第2個數組元素已經全部放到C中,将第1個數組剩餘元素全放到C中
        while (i<)
        {
        out[k]=str1[i];
            k++;
            i++;
        }
    }

    printf("兩個數組合并之後:\n");
    Print(out, M);
}

void main()
{
    int N = ;
    int a[] = {, , , , , , };
    int b[] = {, , , , , , };

    printf("a數組合并之前:\n");
    Print(a, N);

    printf("b數組合并之前:\n");
    Print(b, N);

    //調用數組合并函數
    Merge_function(a, b);
}
           

繼續閱讀