學習演算法(3)——查詢2個數組中的相同元素
阿新 • • 發佈:2019-01-24
這一篇,是在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
---