Java: сортировка несортированного массива в порядке убывания - PullRequest
1 голос
/ 18 апреля 2010

У меня есть несортированный массив объектов. Мне нужно знать, как я могу отсортировать мой массив в порядке убывания, в соответствии с наибольшим значением внутри объектов.

Мне нужно сделать это с помощью циклов, а не простым способом.

Я сделал это, но, похоже, есть проблема:

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

Как мне это сделать, используя циклы?

Ответы [ 5 ]

3 голосов
/ 18 апреля 2010

Это должно помочь вам начать. Вам нужно будет создать свой собственный Comparator и затем вызвать Collections.Sort().

Collections.sort(List<T> list, Comparator<? super T> c)
2 голосов
/ 18 апреля 2010

Предлагаю посмотреть в статье в Википедии алгоритмы сортировки . Ваш код дает сбой, потому что вы сравниваете каждый элемент только со следующим - но это совсем не алгоритм сортировки, потому что для правильного размещения в первой позиции элемент должен быть больше, чем all other элементы, а не только следующий.

Кроме того, использование имени класса в нижнем регистре очень сильно противоречит стандартам кодирования Java.

1 голос
/ 18 апреля 2010
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;
        }
    }
}
1 голос
/ 18 апреля 2010
public class Student implements Comparable { ... }
    Arrays.sort(students);
    List<Object> list = Arrays.asList(students);
    Collections.reverse(list);
    students = list.toArray();
0 голосов
/ 19 апреля 2010
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];
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...