Java:按降序排序未排序的数组

时间:2010-04-18 18:17:41

标签: java

我有一个未排序的对象数组。我需要知道如何根据对象内部的最高值按降序对数组进行排序。

我需要使用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循环?

5 个答案:

答案 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];
        }
    }
}