題目
/**
*
ClassName: MergeSortArray <br/>
*
Function: 合并有序陣列<br/>
* [1, 2, 2, 5]
* [3, 4, 7, 8, 9]
*
*
*/
分析
雙指標移動從前往后的比較,然后把剩余的資料再復制到合并陣列里,其實這也是歸并排序的最核心的代碼,歸并排序(先拆分后合并)分而治之中治的環節,
代碼
public static int[] mergeSortArray(int[] a, int[] b){
int length1 = a.length, length2 = b.length;
if(a == null && b == null){
return null;
}
int[] merge = new int[length1 + length2];
int i = 0, j = 0, k = 0;
while(i < length1 && j < length2){
if(a[i] <= b[j]){
merge[k++] = a[i++];
}else{
merge[k++] = b[j++];
}
}
while(i < length1){
merge[k++] = a[i++];
}
while(j < length2){
merge[k++] = b[j++];
}
return merge;
}
public static void main(String[] args) {
int[] a = {1, 2, 2, 5};
int[] b = {3, 4, 7, 8, 9};
int[] merge = mergeSortArray(a, b);
for(int i = 0; i < merge.length; i++){
System.out.println(merge[i]);
}
}
結果
1
2
2
3
4
5
7
8
9
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/233952.html
標籤:其他
