当前位置: 首页 > 面试题库 >

按降序对int数组排序

厉文栋
2023-03-14
问题内容

以下代码将按 升序 对数组进行排序:

int a[] = {30,7,9,20};
Arrays.sort(a);
System.out.println(Arrays.toString(a));

我需要 按降序 排序。如何使用比较器执行此操作?

请帮忙。


问题答案:

对于原始数组类型,您必须编写一个反向排序算法:

或者,您可以将转换int[]Integer[]并编写比较器:

public class IntegerComparator implements Comparator<Integer> {

    @Override
    public int compare(Integer o1, Integer o2) {
        return o2.compareTo(o1);
    }
}

或使用,Collections.reverseOrder()因为它仅适用于非原始数组类型。

最后,

Integer[] a2 = convertPrimitiveArrayToBoxableTypeArray(a1);
Arrays.sort(a2, new IntegerComparator()); // OR
// Arrays.sort(a2, Collections.reverseOrder());

//Unbox the array to primitive type
a1 = convertBoxableTypeArrayToPrimitiveTypeArray(a2);


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

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

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

  • 问题内容: 我有一个很大的原始类型数组(double)。如何按降序排列元素? 不幸的是,Java API不支持使用比较器对原始类型进行排序。 可能想到的第一种方法是将其转换为对象列表(装箱): 但是,对数组中的每个原语进行装箱速度太慢,并且会导致很大的GC压力! 另一种方法是排序然后反转: 这种方法也很慢 -特别是在数组已经很好排序的情况下。 有什么更好的选择? 问题答案: Java Primit

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

  • 问题内容: 我现在只需获取数组的前3个对象并映射它们: 每个都有一个属性(champ.level)。 如何将输出分类到 前三个切片中? 问题答案: 与自定义比较功能一起使用时,首先要进行降序排序: 使用ES6甚至更好: