颠倒数组打印的顺序

时间:2019-02-04 21:38:36

标签: java arrays

如何将顺序从升序降到降序?我有点沮丧,因为我不能使用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))));

2 个答案:

答案 0 :(得分:3)

只需切换此行:

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

对此:

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

这是因为在现有代码中,如果第一个较大,则交换元素(因此将较大的元素移到列表的后面)。

使用第二个代码段时,如果第一个较小,则会交换元素,从而将较小的元素移到列表的后面。

答案 1 :(得分: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();
}