当前位置: 首页 > 知识库问答 >
问题:

如何排序数组降序和排序数组的不同选项是什么?

阎善
2023-03-14

我一直试图这样做了一段时间,但我不能这样做。

如何将默认的升序更改为降序?另外,还有什么简单的方法可以对数组进行排序吗?

HighScore[] highscorelist = new HighScore[10]; // An array of 10

void setup() {
  size(800, 600);

  // score.txt is:
  //10  -
  //0   -
  //0   -
  //3   b

  String rows[] = loadStrings("scores.txt");

  for (int i = 0; i < highscorelist.length; i ++ ) { // Initialize
    String[] pieces = split(rows[i], TAB);
    highscorelist[i] = new HighScore(parseInt(pieces[0]), pieces[1]);
  }
  Arrays.sort(highscorelist, new SortHighScore());
}

void draw() { 
  fill(0);
  textSize(18);
  text("High Scores", 360, 234);
  text("Name", 300, 260);
  text("Score", 460, 260);
  int x = 320;
  int y = 290;


  //Arrays.sort(highscorelist, new SortHighScore("score"));
  for (int i =0; i < 10; i++) {
    highscorelist[i].display(x, y, 150);
    y+=20;
  }
}


class HighScore {
  int score;
  String name;

  HighScore() {
  }

  HighScore(int tempscore, String tempname) {
    score = tempscore;
    name = tempname;
  }

  void display(int x, int y, int gapX) {
    text(score, x+gapX, y);
    text(name, x, y);
  }
}

class SortHighScore extends HighScore implements Comparator {

  SortHighScore() {
  }

  /*
    method which tells how to order the two elements in the array.
   it is invoked automatically when we call "Arrays.sort", and must be included in this class.
   */
  int compare(Object object1, Object object2) {

    // cast the objects to your specific object class to be sorted by
    HighScore row1 = (HighScore) object1;
    HighScore row2 = (HighScore) object2;


    // necessary to cast to Integer type when comparing ints
    Integer val1 = (Integer) row1.score;
    Integer val2 = (Integer) row2.score;

    // the "compareTo" method is part of the Comparable interface, and provides a means of fully ordering objects.
    return val1.compareTo(val2);
  }
}

共有3个答案

慕容超
2023-03-14

使用数组类进行排序。它有一个inbuit排序功能

郎项禹
2023-03-14

既然您已经编写了一个比较器,请更改这一行

return val1.compareTo(val2);

return val2.compareTo(val1);

以获得降序排序。

戈睿识
2023-03-14
Arrays.sort(array,Collections.reverseOrder());
 类似资料:
  • 问题内容: 有没有什么简便的方法可以按降序对数组进行排序,就像它们在Arrays类中如何按升序排序? 问题答案: 你可以使用它对所有对象进行排序 不能直接用于降序对原始数组进行排序。如果尝试Arrays.sort()通过传递由定义的反向 来调用该方法,则会抛出错误 找不到适合sort(int [],comparator)的方法 可以与“对象数组”(例如整数数组)一起使用,但不能与基本数组(例如整数

  • 我想按第三个和第一个元素对元组数组进行排序,因此我使用了以下代码: 我的问题是,在前面的例子中,我可以按第三个元素和第一个元素的升序排序,也可以按它们的降序排序(使用反向)。但是如何按第三个元素的升序和第一个元素的降序排序。 请在你的回答中考虑以下情况: 在这种情况下,我不知道内部数组的确切大小(取决于我读入该数组的文件模式),我想按侧中的所有项进行排序(一些升序和一些降序)。 编辑:看起来,我明

  • 问题内容: 以下代码将按 升序 对数组进行排序: 我需要 按降序 排序。如何使用比较器执行此操作? 请帮忙。 问题答案: 对于原始数组类型,您必须编写一个反向排序算法: 或者,您可以将转换为并编写比较器: 或使用,因为它仅适用于非原始数组类型。 最后,

  • 有人能提供帮助,如何检查排序降序数组以及?干杯!

  • 我必须按降序整理出用户给出的15个数字。我可以写如何按升序对它们进行排序,但我不知道如何转动它们。使用for循环还是其他什么?

  • 我很惊讶以前没有人问过这个特定的问题,但我真的没有在SO上或。 假设我有一个包含整数的随机numpy数组,例如: 但我希望解决方案按降序排序。 现在,我知道我总能做到: 但这最后一句话是否高效?它不创建一个按升序排列的副本,然后反转这个副本以得到按反转顺序排列的结果吗?如果情况确实如此,是否有一个有效的替代方案?看起来不像接受参数来更改排序操作中比较的符号,以获得相反的顺序。