2011-10-21 95 views
2

我不得不在Java中編寫合併排序功能。沒問題。好吧,有一點,但我通過了它。然後,我沒有得到後續問題。在Java中的合併排序功能

問題:給定一個數組A[][]這樣A[i][0]floatA[i][1]是一個非負int給出值A[i][0](這裏的多樣性認爲這是通過合併重複條目和記錄多少得到了合併塌下來一大載體),編寫合併排序的一個版本,該版本返回B[][],其中B[i][0] < B[i+1][0]適用於所有i

任何想法?我能做的最好的事情就是合併排序,然後分組平等,但顯然你可以一步完成。

+0

是比較的這種「多樣性」的事情的一部分? –

+3

「A [i] [0]是浮點數,A [i] [1]是int」?我想不是! – 2011-10-21 23:55:37

+0

您應該使用數據結構。 – millimoose

回答

2

平靜的問題......並在這些陣列中使用不同類型只是醜陋(個人觀點)

但是,最有用的做法是用Comparator重寫合併函數。 這樣你可以使用任何你想要的屬性進行排序。 您最終會得到像void merge(A[] arr, Comparator<? super A> comp)這樣的簽名。順便說一句,排序的Java實現很像這樣。

爲了解決你的問題,你會打電話:

A[][] a = ...; 
merge(a, new Comparator<A[]>() { 
    int compare(A[] a, A[] b) { 
    return ((Float)a[0]) - ((Float)b[0]); 
    } 
});