合併兩個有序陣列C

2021-10-06 16:11:28 字數 1164 閱讀 5404

題目描述:

有兩個排序的陣列a1和a2,內存在a1的末尾有足夠的空餘空間容納a2。請實現乙個函式,把a2中的所有數字插入到a1中,並且所有的數字是排序的。

思路分析:從尾到頭邊比較,邊移入正確的位置,時間複雜度為o(n)

#include

using

namespace std;

void

combin2array

(int str1,

int length1,

int str2,

int length2)

int newlength = len1+length2 -1;

//這是最新修改的地方!!!新陣列的長度是兩個陣列非零元素數量之和

int len2 = length2 -1;

len1--

;//陣列最後乙個數字的序號為長度減一

while

(len1 >=

0&& len2 >=0)

else

}//下面這部分是新增的,不可缺少,處理乙個陣列中的元素已經完全加入到新陣列,另乙個還沒完的情況

while

(len1 <

0&& len2 >=0)

while

(len2 <

0&& len1 >=0)

}int

main()

;int array2=

;//int array1[100] = ;

//int array2 = ;

combin2array

(array1,

sizeof

(array1)

/sizeof

(int

), array2,

sizeof

(array2)

/sizeof

(int))

;for

(int i =

0; i <

sizeof

(array1)

/sizeof

(int);

++i)

}/*基於範圍的for迴圈

for (auto x :array1)

*/return0;

}

執行結果如下:

合併兩個有序陣列 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 )

合併兩個有序陣列 思路兩個陣列都非空 記兩個陣列分別為v1,v2,合併後的陣列為vc,設定兩個指標i j分別指向陣列v1,v2,令i j 0,若v1 i v2 j 則可以一直新增v1的元素到合併後的陣列vc直到條件不滿足,同時修改i 新增v2的元素到vc 如果乙個陣列被遍歷完,則應該終止 新增未遍歷...

合併兩個有序陣列

例如 陣列a1 陣列a2 則合併為a3 思路 依次掃瞄a1和a2的元素 比較當前元素的值,將較小的元素賦給a3,直到乙個陣列掃瞄完畢,然後將另乙個陣列的剩餘元素賦給a3即可。陣列a3的容量需要容納a1和a2兩個陣列和長度和。實現 include include void merge int a1,i...