簡體   English   中英

如何將數組中的數字從大到小排序?

[英]How can I sort numbers from largest to smallest in an array?

我能夠將矩陣中的數字從小到大排序,但我無法將它們從大到小排序。 請幫忙...

int[] list = new int[4];

System.out.println("Enter the numbers of array: ");
for (int i = 0; i < list.length; i++)
    list[i] = kbd.nextInt();

for (int index = 0; index < list.length; index++) {
    int minIndex = index;
    for (int i = index + 1; i < list.length; i++) {
        if (list[i] < list[minIndex])
            minIndex = i;
    }
    int temp = list[index];
    list[index] = list[minIndex];
    list[minIndex] = temp;
}

System.out.println("Numbers after sorting: ");
for (int j : list) System.out.print(j + " ");
public static void main(String... args) {
    int[] arr = new int[20];
    Random random = new Random();

    for (int i = 0; i < arr.length; i++)
        arr[i] = random.nextInt(10);

    System.out.println(Arrays.toString(arr));
    int[] reverseSortedArr = Arrays.stream(arr)
            .boxed()
            .sorted(Comparator.reverseOrder())
            .mapToInt(i -> i)
            .toArray();
    System.out.println(Arrays.toString(reverseSortedArr));
}

Output:

[9, 0, 8, 1, 4, 7, 3, 6, 4, 6, 7, 6, 2, 3, 8, 0, 1, 3, 5, 2]
[9, 8, 8, 7, 7, 6, 6, 6, 5, 4, 4, 3, 3, 3, 2, 2, 1, 1, 0, 0]

你的方法很好。 除以下內容外無需更改。 您需要做的就是反轉排序條件。 請參閱以下代碼段中的注釋。

for (int i = index + 1; i < list.length; i++) {
    if (list[i] < list[minIndex]) // change < to >
        minIndex = i;
}
import java.util.Arrays;
import java.util.Comparator;
Integer[] array = ...
Arrays.sort( array, Comparator.reverseOrder() );

現在數組中的元素已排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM