二路歸併法求解兩個整型陣列的交集

2021-07-31 16:59:24 字數 748 閱讀 4898

1.問題

已知兩個從小到大排好序的整型陣列a[8]=;b[6]=;則這兩個整型陣列交集為。

2.當兩個陣列的長度相當時,可以採用二路歸併法來進行求解交集

二路歸併法思路:對於陣列a,b分別以i,j從頭遍歷陣列。如果當前位置的a[i]等於b[j],則這兩個數是兩個陣列的乙個交集,記錄下來並繼續遍歷;如果a[i]大於b[j],則繼續遍歷陣列b,否則遍歷陣列a。演算法的**如下:

int comnum(int a,int m,int b,int n,int *p)

return cnt;

}

3.演算法測試完整程式

//二路歸併法 

#includeusing namespace std;

int comnum(int a,int m,int b,int n,int *p)

return cnt;

}int main()

,b[6]=,i,k;

int *count=new int[sizeof(a)/sizeof(int)];//動態記憶體分配

二路歸併 樹狀陣列 求解逆序對

常用的兩種方法,二路歸併 樹狀陣列。二路歸併求解逆序對 二路歸併是乙個十分完美的求逆序對的方法 假設當前求到這一步,現在比較a i a j 的大小,我們根據圖知道,i mid j,而且第一列有序 從小到大 第二列有序,當a i a j 說明a i 到a mid 都大於a j ans mid i 1。...

兩個有序單鏈表的合併 二路歸併

用lc指向合併後的新錶。pa,pb,pc分別作為la,lb,lc的工作指標,pa,pb初始化分別指向兩個有序鍊錶的第乙個元素,pc初始化指向la。從第乙個指標開始比較,哪個元素小,就接在lc後面,如果兩個元素相當,就把乙個鍊錶接在後面,刪除另乙個鍊錶的那個元素,這樣確保合併後的表內無重複元素。當乙個...

求兩個有序整型陣列的交集

有兩個有序的整型陣列a和b 沒有重複元素 他們的長度分別為lena和lenb,求出他們的共同元素。例如 a 0,1,3,5,7,9,11 b 2,3,4,7,11 它們的交集為。求交集的方法有很多種,但陣列的長度會影響演算法的效率。2.1.1 二路歸併 對於陣列a,b分別以i,j從頭遍歷陣列。如果當...