【问题标题】:Sorting a multi-element record stored in an int array对存储在 int 数组中的多元素记录进行排序
【发布时间】:2017-01-10 17:48:19
【问题描述】:

我需要为一个抽象游戏排序一个移动列表。移动列表是一个 int 类型的数组。每一步都需要数组中的九个元素,其中一个是我希望排序的得分值。

我看到 Java 有一个 java.util.Arrays.sort(int[]) 方法,但由于移动列表的多元素结构,我不明白这有什么用处。

我不想写冒泡排序,因为排序速度很关键。

java 是否有任何可以满足我的目的的快速排序功能?即用于以一个元素作为排序值对 int 数组中的多元素记录进行排序?

【问题讨论】:

  • 为什么不创建一个名为 Move 的对象,它拥有 9 个 int 属性,然后拥有它 implements Comparable。然后你可以把你的 Move 对象放在 List 中并做 Collections.sort(whatever 你叫你的列表);
  • 我虽然想使用对象,但被告知我会受到很大的性能影响。此应用程序的排序过程必须尽可能快。
  • 我认为 CollinD 指出你应该工作。在二维数组中移动一行。
  • 性能损失将非常小,您仍然存储通常相同数量的内存。老实说,代码的可读性无论如何都是>性能。如果您不得不返回或其他人需要重构您的代码,那么每个值的含义会​​更清楚,而不仅仅是在数组中排列任意的ints。

标签: java arrays sorting int


【解决方案1】:

你可以这样做:

 public class Move implements Comparable{


      private int score,prop1,prop2;//...

      public int compareTo(Move move) {
          return this.score>move.score?1:this.score<move.score?-1:0;
      }
 }

实现Comparable 将允许您对CollectionMove 对象进行排序,如下所示:

List<Move> moves = new ArrayList<>();
//add all of your Move objects to moves list
Collections.sort(moves);

您的List 现在将根据分数进行排序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 2011-06-15
    • 2020-01-07
    • 1970-01-01
    • 2017-08-25
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多