Merge 能寫成遞迴嘛?

設有一個 int tmp_arr[][]=new int [9][5];

想說將裏面的內容做merge排列…

int Marge[]=new int [100];

for(int i=0;i<1;i ){

Marge=Merge(????, tmp_arr[i]);

}

}//main end--------------------------------------------------

public static int[] Merge(int[] arr1, int[] arr2) {

int[] arr3 = new int[arr1.length arr2.length];

int i = 0, j = 0, k = 0;

while(i < arr1.length && j < arr2.length) {

if(arr1[i] <= arr2[j])

arr3[k ] = arr1[i ];

else

arr3[k ] = arr2[j ];

}

while(i < arr1.length)

arr3[k ] = arr1[i ];

while(j < arr2.length)

arr3[k ] = arr2[j ];

return arr3;

}//--------------------------以上是我merge的寫法…寫死是ok吧(大概)…但只能兩條…就想說能不能用遞迴寫看看…結果不會…

副程式的部份:

我是想說寫 arr3= Merge(arr3, arr2)的遞迴在副程式裏,最後再丟回去…但這樣對嘛?

主程式的部份:

則是我想說將tmp_arr[i]丟下去做排列…所以放後面。寫成

Marge=Merge(????, tmp_arr[i]); 那我前面是要放什麼呢?…

有哪位大大能教導一下呢?謝謝喔

Update:

我寫好了= =|||...

and Arrays.sort好像不能用二維的。。。

想說放著。看誰回就給他了…謝了

1 Answer

Rating
  • 1 decade ago
    Favorite Answer

    我想你想寫的是 merge sort 吧?

    如果你想參考別人寫的程式碼,在一般的教科書都有寫了。

    另外給你一個參考的方向,在 java 的 java.util.Arrays 裡有一個 sort 的功能,就是採用 merge sort 的觀念來寫的。你可以去翻一下他的原始程式碼,裡面就有 merge sort 可以讓你參考,是很好的參考範例。

    要寫好 recursive 最重要的是停止點是什麼?如何避免造成無窮迴圈?

    加油! ^^

    Source(s): me & JDK source
    • Login to reply the answers
Still have questions? Get your answers by asking now.