【问题标题】:merged merge sort in JavaJava中的合并归并排序
【发布时间】:2011-10-21 23:51:59
【问题描述】:

我不得不用 Java 编写一个归并排序函数。没问题。嗯,有一点,但我挺过来了。然后是我没有得到的后续问题。

问题:给定一个数组A[][],使得A[i][0] 是一个float,而A[i][1] 是一个非负的int,给出了值A[i][0] 的多重性(这里想象一个被折叠的大向量通过合并重复的条目并记录合并了多少),编写一个返回B[][]的合并排序版本,其中B[i][0] < B[i+1][0]代表所有i

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

【问题讨论】:

  • 这个“多重性”是比较的一部分吗?
  • “A[i][0] 是浮点数,A[i][1] 是整数”?我认为没有!
  • 你应该使用数据结构。

标签: java algorithm mergesort


【解决方案1】:

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

不过,最有用的做法是使用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]);
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 2015-03-02
    • 2013-03-15
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多