список массива сортировки Java с использованием пузырьковой сортировки - PullRequest
0 голосов
/ 14 ноября 2011

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

 public static void bubblesrt(ArrayList<Drinks> list)
  {
        Drink temp;
        if (list.size()>1) // check if the number of orders is larger than 1
        {
            for (int x=0; x<list.size(); x++) // bubble sort outer loop
            {
                for (int i=0; i < list.size()-i; i++) {
                    if (list.get(i).compareTo(list.get(i+1)) > 0)
                    {
                        temp = list.get(i);
                        list.set(i,list.get(i+1) );
                        list.set(i+1, temp);
                    }
                }
            }
        }

  }

и это метод compareTo (), который находится в классе Drinks

  public int compareTo(Drinks z) 
  {
      int res=0;
        if (quantity < z.quantity) {res=-1;  }
        if (quantity > z.quantity){res=1;}
      return res;
  }

Сейчас я так устала, что готова отказаться от этого. Любая помощь будет оценена. Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 14 ноября 2011

Попробуйте изменить

list.add(i,list.get(i+1) );

на

list.set(i,list.get(i+1) );

и

for (int i=0; i < list.size()-i; i++)

на

for (int i=0; i < list.size() - x - 1; i++)
1 голос
/ 14 ноября 2011

У вас есть эта строка:

list.add(i,list.get(i+1) )

Должно быть:

list.set(i,list.get(i+1) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...