学习算法(3)——查找2个数组中的相同元素

来源:互联网 发布:安卓手机仿windows桌面 编辑:程序博客网 时间:2024/05/01 08:58

这一篇,是在2个数组中,找相同的值。


假设,这两个数组已经排好序(升序),那么只需要遍历一次即可。

首先设两个下标,分别初始化为两个数组的起始地址,依次向前推进 。推进的规则是比较两个数组中的数字,小的那个数组的下标向前推进一步,直到任何一个数组的下标到达数组末尾时,如果这时还没碰到相同的数字,说明数组中没有相同的数字。[1]


代码如下:

#include <QCoreApplication>#include <iostream>#include <map>#include <set>using namespace std;bool findcommon2(int a[], int size1, int b[], int size2, vector<int> &vec){     int i=0,j=0;     while(i<size1 && j<size2) {          if(a[i]==b[j]) {            vec.push_back(a[i]);            i++;            j++;          }          if(a[i]>b[j])               j++;          if(a[i]<b[j])               i++;     }     return false;}int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    int data[10] = {1,2,3,4,5,6,7,8,9,10};    int rt[15] = {5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};    vector<int> vec;    findcommon2(data, 10, rt, 15, vec);    vector<int>::iterator it;    it = vec.begin();    for (;it != vec.end(); ++it) {        cout << *it << endl;    }    return a.exec();}//





参考文献:

[1] http://blog.csdn.net/lonelywinter340/article/details/3292843




---

0 0
原创粉丝点击