Bader
Bader

Reputation: 207

Java: Sorting unsorted array in descending order

I have an unsorted array of objects. I need to know how I can sort my array in descending order, according to the highest value inside the objects.

I need to do this using for loops, not the easy way.

I had done this but it seems there is a problem:

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

How should I do it using for loops?

Upvotes: 1

Views: 5430

Answers (5)

Bader
Bader

Reputation: 207

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

Upvotes: 0

Chris J
Chris J

Reputation: 9252

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;
        }
    }
}

Upvotes: 1

Xorty
Xorty

Reputation: 18861

public class Student implements Comparable { ... }
    Arrays.sort(students);
    List<Object> list = Arrays.asList(students);
    Collections.reverse(list);
    students = list.toArray();

Upvotes: 1

Michael Borgwardt
Michael Borgwardt

Reputation: 346300

I suggest looking at the Wikipedia article for sorting algorithms. Your code fails because you compare each element only with the next one - but that's not a sorting algorithm at all, because in order to be correctly placed in the first position, an element needs to be bigger than all other elements, not just the next one.

Also, Using a lowercase class name is very much against Java coding standards.

Upvotes: 2

Taylor Leese
Taylor Leese

Reputation: 52310

This should get you started. You'll need to create your own Comparator and then call Collections.Sort().

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

Upvotes: 3

Related Questions