使用冒泡排序的java排序arraylist

时间:2011-11-14 11:53:54

标签: java sorting

过去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 个答案:

答案 0 :(得分:6)

尝试更改

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 :(得分:1)

你有这一行:

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

应该是:

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