給定兩個排序後的陣列 a 和 b,其中 a 的末端有足夠的緩衝空間容納 b。 編寫乙個方法,將 b 合併入 a 並排序。
初始化 a 和 b 的元素數量分別為 m 和 n。
class
solution
:def
merge
(self, a: list[
int]
, m:
int, b: list[
int]
, n:
int)
->
none
:"""
do not return anything, modify a in-place instead.
"""a[m:
(m+n)
]= b
a.sort(
)
class
solution
:def
merge
(self, a: list[
int]
, m:
int, b: list[
int]
, n:
int)
->
none
:"""
do not return anything, modify a in-place instead.
"""length = m+n-
1while n-
1>=0:
if m <1:
# 考慮邊界情況以及a被移動過元素的處理!!!!
print
(n) a[
:n]= b[
:n]break
if a[m-1]
<= b[n-1]
:# 從尾至頭逐個比較
a[length]
= b[n-1]
# 較大的元素移動至合併的陣列尾部
b[n-1]
=0n -=
1else
: a[length]
= a[m-1]
a[m-1]
=0m -=
1 length -=
1
合併排序陣列
合併兩個排序的整數陣列a和b變成乙個新的陣列。樣例給出a 1,2,3,4 b 2,4,5,6 返回 1,2,2,3,4,4,5,6 挑戰 你能否優化你的演算法,如果其中乙個陣列很大而另乙個陣列很小?class solution param a and b sorted integer array a...
合併排序陣列
題目要求 合併兩個排序好的陣列 2.1 version one 完全採用c 內建函式,不用考慮任何演算法,執行通過 vector mergesortedarray vector a,vector b 2.2 version two 分別使用兩個迭代器指向待排序的陣列,然後依次比較大小.直到出現有乙個...
演算法 合併排序的陣列
題目 給定兩個排序後的陣列 a 和 b,其中 a 的末端有足夠的緩衝空間容納 b。編寫乙個方法,將 b 合併入 a 並排序。初始化 a 和 b 的元素數量分別為 m 和 n。輸入 a 1,2,3,0,0,0 m 3 b 2,5,6 n 3 輸出 1,2,2,3,5,6 class solution ...