合併兩個已排序的陣列

2021-09-22 22:37:43 字數 1438 閱讀 6402

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

void mergelist(int la,int a_length,int lb,int b_length)

for (int i = 0; i < a_length-1; i++)

}for (int i = 0; i < b_length - 1; i++)

}int m_length = a_length + b_length;

int a_index = a_length - 1;

int b_index = b_length - 1;

int m_index = m_length - 1;

while (a_index >= 0 &&b_index >= 0)

else

m_index--;

}while (a_index >= 0)

while (b_index >= 0)

//return la;

}時間複雜度:o(a_length + b_length)

空間複雜度:o(1)

《劍指offer》 p55 相關題目

題目描述2:有兩個排序的陣列a1和a2,請實現乙個函式,把a1、a2中的所有數字插入新的陣列a3中,並且所有的數字是排序的。

void mergelistnew(int la,int a_length,int lb,int b_length,int lc,int c_length)

for (int i = 0; i < a_length - 1; i++)

}for (int i = 0; i < b_length - 1; i++)

}int a_index = 0;

int b_index = 0;

int c_index = 0;

while (a_index < a_length && b_index < b_length)

else

c_index++;

}while (a_index < a_length)

while (b_index < b_length)

}時間複雜度:o(a_length + b_length)

空間複雜度:o(a_length + b_length)

《資料結構》嚴蔚敏 吳偉民編著 p20 例2-2

合併兩個已排序的表

merge演算法 假定有乙個陣列a 1 m p,q,r,為它的三個索引,a p q a q 1,r 各自公升序排列,我們需要重新使得a p,r 也按公升序排列,我們用兩個指標s和t分別指向p和q 1,定義乙個輔助陣列b r p 1 比較a s 和a t 若前者小於等於後者,則將a p 存放到我們先前...

兩個已排序陣列的合併 C語言

最近在紙上寫乙個已排序陣列的合併時,花了超過預期的時間。仔細想想,這種要放到畢業找工作那會兩下就出來了,原因還在於工作後對基礎沒有重視,疏於練習。說開一點,現在搜尋引擎的發達確實給問題的解決帶來了便利,但是久而久之,對很多東西的掌握其實並不深入。比如 系的人經常分享一些linux核心io優化相關的內...

合併兩個排序的陣列

includeusing namespace std 有兩個排序的陣列a1和a2,內存在a1的末尾有足夠多的空餘空間容納a2.實現乙個函式,把a2中的所有數字插入到a 中並且所有的數字是排序的。思路 先計算出兩個陣列中元素的總個數,然後從尾到頭比較array1和array2中的數字,並把較大的數字複...