java中的升序和降序数

xyv*_*yre 6 java

我在java中执行升序和降序编号,这是我的代码:

System.out.print("Enter How Many Inputs: ");
int num1 = Integer.parseInt(in.readLine());
int arr[] = new int[num1];

for (int i = 0; i<num1; i++) {
    System.out.print("Enter Value #" + (i + 1) + ":");
    arr[i] =Integer.parseInt(in.readLine());
}

System.out.print("Numbers in Ascending Order:" );

for(int i = 0; i < arr.length; i++) {
    Arrays.sort(arr);
    System.out.print( " " +arr[i]);
}

System.out.println(" ");
System.out.print("Numbers in Descending Order: " );
Run Code Online (Sandbox Code Playgroud)

目前,代码生成以下内容:

Enter How Many Inputs: 5
Enter Value #1:3
Enter Value #2:5
Enter Value #3:6
Enter Value #4:11
Enter Value #5:2
Numbers in Ascending Order: 2 3 5 6 11 
Numbers in Descending Order: 
Run Code Online (Sandbox Code Playgroud)

因此,Arrays.sort(arr)调用似乎有效 - 但我正在寻找一种类似的简单方法来提供降序排序,并且无法在文档中找到它.有任何想法吗?

Jir*_*ser 5

我想到了三种可能的解决方案:

1.颠倒顺序:

//convert the arr to list first
Collections.reverse(listWithNumbers);
System.out.print("Numbers in Descending Order: " + listWithNumbers);
Run Code Online (Sandbox Code Playgroud)

2.向后迭代并打印:

Arrays.sort(arr);
System.out.print("Numbers in Descending Order: " );
for(int i = arr.length - 1; i >= 0; i--){
  System.out.print( " " +arr[i]);
}
Run Code Online (Sandbox Code Playgroud)

3.使用“相反”比较器对其进行排序:

Arrays.sort(arr, new Comparator<Integer>(){
   int compare(Integer i1, Integer i2) {
      return i2 - i1;
   }
});
// or Collections.reverseOrder(), could be used instead
System.out.print("Numbers in Descending Order: " );
for(int i = 0; i < arr.length; i++){
  System.out.print( " " +arr[i]);
}
Run Code Online (Sandbox Code Playgroud)


DNA*_*DNA 0

像以前一样对数组进行排序,但使用向下计数而不是向上计数的循环以相反的顺序打印元素。

另外,将排序移出循环 - 当前,当您只需要对数组排序一次时,您正在一遍又一遍地对数组进行排序。

                Arrays.sort(arr);
                for(int i = 0; i < arr.length; i++){
                    //Arrays.sort(arr); // not here
                    System.out.print( " " +arr[i]);
                }
                for(int i = arr.length-1; i >= 0; i--){
                    //Arrays.sort(arr); // not here
                    System.out.print( " " +arr[i]);
                }
Run Code Online (Sandbox Code Playgroud)