我是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
值。另请注意,我们使用的是>
(大于)比较器而不是==
。