題目描述:
有兩個排序的陣列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...