Java-排序ArrayList-气泡排序

Java-排序ArrayList-气泡排序,java,sorting,arraylist,bubble-sort,Java,Sorting,Arraylist,Bubble Sort,我必须对包含客户购买频率的arrayList进行排序。因此,我可以按升序或降序显示输出。然而,我不太确定我遗漏了什么,但它根本没有对元素进行排序。我真的很感激任何意见或反馈 这就是我到目前为止所做的: for(int i=0; i<customers.size(); i++) { for(int k= i+1; k <customers.size(); k++) { if((customers.get(k)).compa

我必须对包含客户购买频率的arrayList进行排序。因此,我可以按升序或降序显示输出。然而,我不太确定我遗漏了什么,但它根本没有对元素进行排序。我真的很感激任何意见或反馈

这就是我到目前为止所做的:

for(int i=0; i<customers.size(); i++)
{
        for(int k= i+1; k <customers.size(); k++)
        {
                if((customers.get(k)).compareTo(customers.get(i)) < 0)
                {
                        Customer temp = customers.get(i);
                        customers.set(i, customers.get(k));
                        customers.set(k,temp);

                }
        }

        System.out.println(customers.get(i));   
}
保持K=i,在内部循环中尝试以下方法:

for(int k= i; k <customers.size() - i -1; k++)
{

如果要打印已排序的列表System.out.printlncustomers.geti;必须在排序循环之外。在该循环之后添加另一个循环以打印结果

您有一些错误

// I tested with List<String>, String temp.
public static void sort(List<Customer> customers) {
  for (int i = 0; i < customers.size() - 1; i++) {
    for (int k = i + 1; k < customers.size(); k++) {
      // Compare left to right, not right to left.
      if (customers.get(i).compareToIgnoreCase(customers.get(k)) > 0) {
        Customer temp = customers.get(i);
        customers.set(i, customers.get(k));
        customers.set(k, temp);
      }
    }
  }
}
试试这个

int n = yourArray.size();
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < n - i - 1; j++)
            if (yourArray.get(j) < yourArray.get(j + 1)) {
                int temp = yourArray.get(j);
                yourArray.set(j, yourArray.get(j + 1));
                yourArray.set(j + 1, temp);`
            }

我认为关键是ifcustomers.getk.compareTignoreCaseCustomers.geti<0。我建议您调试一下,看看它是否能像您期望的那样工作。您的代码甚至都无效,编译Java代码。为什么不使用Collections.sort而不是重新发明轮子呢?还有,int=k+1是int=k+1对吗?int=k+1-什么?这不可能是你真正的代码。向我们展示,如果不是你真正的代码,那么至少是你实际测试过的代码。我需要为这个程序使用冒泡排序算法。如果k==I,你不需要比较第k个对象和第I个对象。
Alice
bob
Bob
Bob
Carol
int n = yourArray.size();
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < n - i - 1; j++)
            if (yourArray.get(j) < yourArray.get(j + 1)) {
                int temp = yourArray.get(j);
                yourArray.set(j, yourArray.get(j + 1));
                yourArray.set(j + 1, temp);`
            }