合併兩個有序陣列
思路兩個陣列都非空:記兩個陣列分別為v1,v2,合併後的陣列為vc,設定兩個指標i、j分別指向陣列v1,v2,令i=j=0,
若v1[i] <= v2[j],則可以一直新增v1的元素到合併後的陣列vc直到條件不滿足,同時修改i;
新增v2的元素到vc;
如果乙個陣列被遍歷完,則應該終止;
新增未遍歷完的陣列的其餘元素到vc。
**
1 vector merge(vector &v1, vector &v2)215while(v1[i]>=v2[j] && j 1620}21
while(i2226
while(j2731
32return
r;33 }
測試**
1 #include 2 #include 3 #include 4using
namespace
std;
5void printvec(const vector &v)611
12//
每次遍歷使當前元素最小,第二次為次最小,...
13 vector sortascend(vector &v)
1426}27
//printvec(r);28}
29return
r;30}31
32int
main()
33, v1r;
35 std::vector v2 = , v2r;
36 v1r =sortascend(v1);
37 cout << "
-----------------------------
"<38 v2r =sortascend(v2);
39 vector r =merge(v1r, v2r);
40printvec(v1r);
41printvec(v2r);
42printvec(r);
43 assert(r.size() == v1r.size()+v2r.size());
44 }
合併兩個有序陣列 c
題目描述 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 示例 輸入 nums1 1,2,3,0,0,0 m 3 nums2 2,5,6 n 3輸出 1,2,2,3,5,6 思路1 建立乙個新的向量陣列,很常規的乙個思...
合併兩個有序陣列C
題目描述 有兩個排序的陣列a1和a2,內存在a1的末尾有足夠的空餘空間容納a2。請實現乙個函式,把a2中的所有數字插入到a1中,並且所有的數字是排序的。思路分析 從尾到頭邊比較,邊移入正確的位置,時間複雜度為o n include using namespace std void combin2ar...
合併兩個有序陣列
例如 陣列a1 陣列a2 則合併為a3 思路 依次掃瞄a1和a2的元素 比較當前元素的值,將較小的元素賦給a3,直到乙個陣列掃瞄完畢,然後將另乙個陣列的剩餘元素賦給a3即可。陣列a3的容量需要容納a1和a2兩個陣列和長度和。實現 include include void merge int a1,i...