合併排序的陣列,時間複雜度為(m n)

2021-10-03 11:01:38 字數 610 閱讀 4033

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

//假如b中沒有元素

if(n==0)

//記錄a位置的倒序索引

int index_a=m-1;

//記錄b位置的倒序索引

int index_b=n-1;

//記錄a與b合併所需要的空間

int index=m+n-1;

//當兩者都不為空的時候進行比較

while(index_a>=0&&index_b>=0)else

}//當index_a>0時,證明此時a陣列沒有遍歷完全,但是無需處理,因為陣列a本身有序。

//當index_b>0時,此時b沒有完全遍歷,將其遍歷賦值完全即可。

while(index_b>=0)

}}

時間複雜度為O n 的排序

題目 某公司有幾萬名員工,請完成乙個時間複雜度為o n 的演算法對該公司員工的年齡作排序,可使用o 1 的輔助空間。分析 排序是面試時經常被提及的一類題目,我們也熟悉其中很多種演算法,諸如插入排序 歸併排序 氣泡排序,快速排序等等。這些排序的演算法,要麼是o n2 的,要麼是o nlogn 的。可是...

時間複雜度為O(n)的排序演算法

我們常用的幾種排序演算法,氣泡排序,選擇排序,它們已經是相對比較簡單,穩定的排序演算法了,但是它們時間複雜度為o n n 基本都要用到兩層迴圈,今天我就像大家介紹一種簡單,只用一層for迴圈,時間複雜度為o n 的排序演算法。樣例輸入 1 4 5 6 3 4 2 8 9 1 樣例輸出 1 1 2 3...

時間複雜度為O n t 的排序

剛在csdn論壇上看到乙個 關於1 n自然數排序的華為面試題 的帖子,勾起了我的回憶 我大二時有段時間閒得沒事幹,想做乙個int型的陣列排序,達到時間複雜度為o n 的目的,同學都因為n log2 n 說這不可能,但自己做完後感覺不錯,雖做不到o n 但自認為時間複雜度為o n t 大家鑑別鑑別是不...