首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分拣双份

分拣双份
EN

Stack Overflow用户
提问于 2018-04-20 13:25:09
回答 1查看 71关注 0票数 0

我对java很陌生,我正试图使一种泡泡排序工作在双倍的环境中。出于某种原因,分拣对我来说是一个真正的难题。下面是代码,但它什么也没做。它不会出错,但也不会排序。我觉得这是个愚蠢的语法错误。我的目标是使项目文件中的项的值降序排序。

代码语言:javascript
复制
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;
    }

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

代码语言:javascript
复制
sortValue(example);

并且仍然得到以下结果:

代码语言:javascript
复制
books   2.0 2.0 2   2
shoes   1.0 1.0 1   1
sword   10.0    10.0    10  10

不漂亮,但基本上10岁应该排在第一位。感谢你的建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-20 13:43:14

你想要做的事情叫做BubbleSort,但是你遗漏了一些东西:

代码语言:javascript
复制
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值。还请注意,我们使用的是> (大于)比较器,而不是==

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49942717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档