簡體   English   中英

Java:按降序對未排序的數組進行排序

[英]Java: Sorting unsorted array in descending order

我有未分類的對象數組。 我需要知道如何根據對象內的最大值按降序對數組進行排序。

我需要使用for循環來完成此操作,而不是簡單的方法。

我已經這樣做了,但似乎有一個問題:

student[] temp=new student[s.length];

for (int i=0;i<s.length;i++)
{
    if (s[i].GetGpa() > s[i + 1].GetGpa())
    {
        temp[i] = s[i];
    }
}

我應該如何使用for循環?

這應該使您入門。 您需要創建自己的Comparator ,然后調用Collections.Sort()

Collections.sort(List<T> list, Comparator<? super T> c)

我建議查看Wikipedia文章中的排序算法 代碼失敗是因為您僅將每個元素與下一個元素進行比較-但這根本不是排序算法,因為要正確放置在第一個位置,一個元素需要比所有其他元素大,而不僅僅是下一個一。

另外,使用小寫的類名非常違反Java編碼標准。

public class Student implements Comparable { ... }
    Arrays.sort(students);
    List<Object> list = Arrays.asList(students);
    Collections.reverse(list);
    students = list.toArray();
for (int j=0;j<s.length;j++) {
    for (int i=0;i<s.length - 1 - j;i++)
    {
        if (s[i].GetGpa() > s[i + 1].GetGpa())
        {
            student temp = s[i];
            s[i] = s[i+1];
            s[i+1] = temp;
        }
    }
}
for(int i=0;i<s.length;i++)
{
    for(int j=i+1;j<s.length;j++)
    {
        if(s[j].GetGpa()>s[i].GetGpa())
        {
            student[] temp=new student[5];
            temp[j]=s[j];
            s[j]=s[i];
            s[i]=temp[j];
        }
    }
}

暫無
暫無

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

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