合併排序的陣列

2021-10-03 11:45:18 字數 1148 閱讀 5915

給定兩個排序後的陣列 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 ...