最近看到乙個演算法題目,覺得很有意義,就自己查資料,摸索著自己實現了**,特記錄一下。
題目:有兩個陣列a和b,將它們合併成陣列c,需要c也是有序陣列。
有兩種實現思路:
1. 定義乙個新陣列,長度為兩個陣列長度之和,將兩個陣列都copy到新陣列,然後排序。
2. 給兩個陣列分別定義乙個下標,最大長度是陣列長度減一,按位迴圈比較兩個陣列,較小元素的放入新陣列,下標加一(注意,較大元素對應的下標不加一),直到某乙個下標超過陣列長度時退出迴圈,此時較短陣列已經全部放入新陣列,較長陣列還有部分剩餘,最後將剩下的部分元素放入新陣列,大功告成。
第一種方式應該是大多數人想到的,也比較容易實現,下面主要來實現第二種方式。
**如下:
publicstatic
int mergelist(int a,int
b)
else
/*後面連個while迴圈是用來保證兩個陣列比較完之後剩下的乙個陣列裡的元素能順利傳入 *
* 此時較短陣列已經全部放入新陣列,較長陣列還有部分剩餘,最後將剩下的部分元素放入新陣列,大功告成
*/while(i result[k++] = a[i++];
while(j result[k++] = b[j++];
return
result;
}
合併兩個有序數組成乙個有序陣列
題目 有兩個陣列a和b,將它們合併成陣列c,需要c也是有序陣列。有兩種實現思路 定義乙個新陣列,長度為兩個陣列長度之和,將兩個陣列都copy到新陣列,然後排序。給兩個陣列分別定義乙個下標,最大長度是陣列長度減一,按位迴圈比較兩個陣列,較小元素的放入新陣列,下標加一 注意,較大元素對應的下標不加一 直...
演算法 兩個有序陣列合併成乙個有序陣列
兩個有序陣列的合併函式 public static int mergelist int a,int b else 後面連個while迴圈是用來保證兩個陣列比較完之後剩下的乙個陣列裡的元素能順利傳入 while i result k a i while j result k b j return re...
兩個有序陣列合併為乙個有序陣列
思想 先依次比較兩個陣列,按照小的就傳入新的陣列。當這次比較完之後可能有乙個陣列的長度很長,留下一些陣列,然後在新陣列的末尾插入即可。1 class arraysort 2else 1920 後面連個while迴圈是用來保證兩個陣列比較完之後剩下的乙個陣列裡的元素能順利傳入 21 while i a...