C語言計算兩個有序數組中的公共元素

bcf2 9年前發布 | 1K 次閱讀 C/C++

求兩個有序數組的共同元素,比如數組a={1,2,3,8,9}和b={8,9,10},則輸出output={8,9}

// 找出兩個數組的共同元素
int* FindCommon(int* a, int* b, int nA, int nB, int& nOut)
{
    int i = 0;
    int j = 0 ;
    vector<int> vec_comm;

    int* output = NULL;

    while (i < nA && j < nB)
    {
        if (a[i] < b[j])
            ++i ;
        else if(a[i] == b[j])
        {
            vec_comm.push_back(a[i]);
            cout << a[i] << endl ;
            ++i ;
            ++j ;
        }
        else// a[i] > b[j]
            ++j ;
    }

    nOut = vec_comm.size();

    int nCoun = 0;
    if (nOut>0)
    {
        output=new int[nOut];
        vector<int>::iterator itorComm;

        for(itorComm=vec_comm.begin(); itorComm!=vec_comm.end(); itorComm++)
        {
            output[nCoun] = *itorComm;
            nCoun++;
        }
    }

    return output;
}
測試代碼
int main()
{
    int* a= new int[6];
    int* b= new int[3];

    a[0]=2;
    a[1]=3;
    a[2]=4;
    a[3]=6;
    a[4]=8;
    a[5]=9;

    b[0]=8;
    b[1]=9;
    b[2]=10;

    int nOut = 0;

    int* output = FindCommon(a, b, 6, 3, nOut);

    for (int i=0; i<nOut; i++)
    {
        cout << output[i] << "," ;
    }

    cout << endl;

    delete[] a;
    a=NULL;
    delete[] b;
    b=NULL;

    delete[] output;
    output=NULL;

    cout << endl;

    return 0;
}
 本文由用戶 bcf2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!