| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
bcf2
10年前发布

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;  }