2014-03-12 59 views
0

我希望像我一样在这里进行排序我在同一个阵列:数组排序和打印逆转

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    int[] numbers = new int[3]; 

    System.out.println("Enter numbers: "); 
    numbers[0] = sc.nextInt(); 
    numbers[1] = sc.nextInt(); 
    numbers[2] = sc.nextInt(); 

    System.out.println("Before: " + Arrays.toString(numbers)); 
    Arrays.sort(numbers); 
    System.out.println("After: " + Arrays.toString(numbers)); 

} 

我的问题是,它现在应该是相反的。所以它不应该是上升,而是下降。有谁能够帮助我?

+0

写自己的排序? –

+0

您需要将数组按照您的问题标题进行排序和颠倒,或者排序并_just_反向打印? –

回答

4

如果你可以改变从int[]Integer[],那么你可以使用的Arrays.sort()重载版本,并通过Collections.reverseOrder()传递一个返回Comparator作为第二个参数:

Arrays.sort(numbers, Collections.reverseOrder()); 

注意这将不适用于int[]原始数组。

+0

^好的一点在这里,你必须改变int [] Integer [],但它不会影响你的数组内容。 –

+1

@FaresA。你评论的最后一部分是什么意思? –

+0

int []和Integer []对他的程序没有任何影响。 –

6

Arrays.sort(numbers,Collections.reverseOrder());

3

您可以使用Collections库,其中有非常有用的方法,包括.reverseOrder()。它基本上是这样的:

Integer[] yourReversedArray = Arrays.sort(yourArrayHere, Collections.reverseOrder());

+2

'Arrays.sort()'在原地排序。 –

1

您可以只需反向排序的数组:

for(int i = 0; i < numbers.length/2; i++) 
{ 
    int temp = numbers[i]; 
    numbers[i] = numbers[numbers.length - i - 1]; 
    numbers[numbers.length - i - 1] = temp; 
} 

或与Apache Commons.Lang(http://commons.apache.org/proper/commons-lang/):

ArrayUtils.reverse(int[] array)