合併兩個有序陣列(C )

2022-08-10 06:21:10 字數 1079 閱讀 1661

合併兩個有序陣列

思路兩個陣列都非空:記兩個陣列分別為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)215

while(v1[i]>=v2[j] && j 1620}21

while(i2226

while(j2731

32return

r;33 }

測試**

1 #include 2 #include 3 #include 4

using

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...