演算法有序陣列合併

2022-04-07 20:39:50 字數 660 閱讀 9427

最近看一本書上有乙個面試題, 原題目是 有兩個遞增陣列 a1 a2, a1的記憶體空間足夠長, 現在要求合併 a2到a1,並且要求移動次數最小 ,面試的時候 我們盡量要以

最高效的方式完成 ,下面是此題 o(n)解法。

///合併

void mergearray(int *arra1,int *arra2,int nlena1,int nlena2)

//當a2小於 a1

else if(*penda20)

pbehanda1--;}}

測試**

int *p1=new int[100] ;

p1[0]=10;

p1[1]=40;

p1[2]=60;

p1[3]=70;

p1[4]=80;

p1[5]=90;

p1[6]=99;

int *p2=new int[100] ;

p2[0]=3;

p2[1]=7;

p2[2]=9;

p2[3]=11;

p2[4]=21;

p2[5]=22;

p2[6]=33;

mergearray(p2,p1,7,7);

for(int i=0;i<14;i++){

cout<

結果

不同的有序陣列合併

有序陣列合併 void orderlistmerge int b self printlist a length alen self printlist b length blen int result 14 int p 0,q 0,i 0 p為a陣列下標 q為b陣列下標,i為合併陣列下標 任意子陣...

演算法 陣列 合併兩個有序陣列

自己辛苦練習了一周多的陣列演算法題,終於寫出了最優的解決方案。雖然方法有點笨,沒有別人寫的簡單,但是仍然值得鼓勵。給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m...

演算法 兩個有序陣列合併成乙個有序陣列

兩個有序陣列的合併函式 public static int mergelist int a,int b else 後面連個while迴圈是用來保證兩個陣列比較完之後剩下的乙個陣列裡的元素能順利傳入 while i result k a i while j result k b j return re...