Java中的合并合并排序

时间:2011-10-21 23:52:00

标签: java algorithm mergesort

我必须在Java中编写合并排序函数。没问题。嗯,有点,但我完成了它。然后是我没有得到的后续问题。

问题:给定数组A[][]A[i][0]floatA[i][1]为非负int,给出值{{1}的多重性(这里想到一个通过组合重复条目并记录合并的数量而折叠的大向量),编写一个合并排序版本,返回A[i][0]所有B[][] B[i][0] < B[i+1][0] }。

有什么想法吗?我能做的最好的事情就是合并排序,然后对相同的排序进行分组,但显然你可以一步完成。

1 个答案:

答案 0 :(得分:2)

Strage问题......在这些数组中使用不同的类型只是丑陋的(个人观点)

然而,最有用的事情是用Comparator重写合并函数。 这样您就可以使用您想要的任何属性进行排序。 最终会得到像void merge(A[] arr, Comparator<? super A> comp)这样的签名。 顺便说一下,sort的Java实现很像这样。

要解决您的问题,请致电:

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