[英]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.