反转由阵列打印的顺序

问题描述 投票:0回答:2

我怎么会去扭转从升序到降序的顺序?我有点为难,因为我不能array.reverse使用等因为我们的测试中,我们将不会被允许使用Java的内置方法。这是一个令人失望,arrays.sort是惊人的。但截至目前,它不打印按升序排列。我是比较新的编码和这个网站,所以如果我的格式是坏的。我道歉。

public static int[] sort(int a, int b, int c) {
    int[] j = {a, b ,c};
    int i, k, temp = 0;

    for(i = 0; i < j.length; i++) {
        for(k = i + 1; k < j.length; k++) {
            temp = 0;
            if(j[i] > j[k]) {
                temp = j[i];
                j[i] = j[k];
                j[k] = temp;
            }
        }
    }
}

public static void main (String[] args) {

    System.out.println(Arrays.toString((sort(6,3,11))));
java arrays
2个回答
3
投票

简单地切换这一行:

if(j[i] > j[k]) {

为此:

if(j[i] < j[k]) {

这是因为在现有的代码,你要互换的第一个元素是大(比移动较大的一个,以在后面的列表)。

当使用第二代码段,它交换的元素,如果第一个是较小的,因此,移动较小的一个在列表中以后。


0
投票

您可以使用Java 8流来简化这个功能。一个参数添加到您的排序功能,并且容易:

private static int[] sort(int a, int b, int c, boolean ascending) {
    Comparator<? super Integer> comparator = (ascending) ? Integer::compareTo : Comparator.reverseOrder();
    return Stream.of(a, b, c).sorted(comparator).mapToInt(t -> t).toArray();
}
© www.soinside.com 2019 - 2024. All rights reserved.