我有一个未排序的对象数组。我需要知道如何根据对象内部的最高值按降序对数组进行排序。
我需要使用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循环?
答案 0 :(得分:3)
这应该让你开始。您需要创建自己的Comparator
,然后拨打Collections.Sort()
。
Collections.sort(List<T> list, Comparator<? super T> c)
答案 1 :(得分:2)
我建议查看维基百科的sorting algorithms文章。您的代码失败是因为您只将每个元素与下一个元素进行比较 - 但这根本不是排序算法,因为为了正确放置在第一个位置,元素需要大于所有其他元素,而不仅仅是下一个元素。
另外,使用小写的类名非常违反Java编码标准。
答案 2 :(得分:1)
public class Student implements Comparable { ... }
Arrays.sort(students);
List<Object> list = Arrays.asList(students);
Collections.reverse(list);
students = list.toArray();
答案 3 :(得分:1)
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;
}
}
}
答案 4 :(得分:0)
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];
}
}
}