java - 排序双

扫码查看

我是java的新手,正在尝试使冒泡排序工作翻倍。出于某种原因,排序对我来说是一个真正的麻烦。下面是代码,但是它什么也没做。它不会出错,但是也不会排序。我觉得这是一个愚蠢的语法错误。我的目标是获取项目文件中某项的值,以降序排列。

public static ArrayList<Item> sortValue(ArrayList<Item> example)
    {
        for (int i = 0; i < example.size() - 1; i++ )
            for (int j = 0; j < example.size() - 1 - i; j++)
                if (example.get(j).getValue() == (example.get(j+1).getValue())) {
                    example.add(j+1, example.remove(j));
                }

        return example;
    }


我在另一个方法的开头调用该方法:

sortValue(example);


仍然得到以下结果:

books   2.0 2.0 2   2
shoes   1.0 1.0 1   1
sword   10.0    10.0    10  10


不太漂亮,但基本上10应该在顶部。
赞赏的建议!

最佳答案

您尝试做的事情叫做BubbleSort,但是您缺少一些东西:

public static ArrayList<Item> sortValue(ArrayList<Item> example) {
    Item aux = null;
    for(int i = 0; i < example.size(); i++){
        for(int j = 0; j < example.size() - 1; j++){
            if(example.get(j).getValue() > example.get(j + 1).getValue()){
                aux = example.get(j);
                example.set(j, example.get(j + 1));
                example.set(j + 1, aux);
            }
        }
    }
    return example;
}


注意,我们使用了一个名为aux的局部变量来存储列表j的位置,然后将其更新为j + 1值。另请注意,我们使用的是>(大于)比较器而不是==

07-24 09:46
查看更多