2011-10-21 54 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]); 
    } 
});