首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对10个数字的列表进行排序

对10个数字的列表进行排序
EN

Stack Overflow用户
提问于 2018-01-28 02:04:02
回答 1查看 74关注 0票数 3

我有一个大小为10的原子整数数组,我使用这个数组来组织线程发送的数字1-10。这个1-10最终将能够更改为大于10的数字范围,该列表将包含该范围内的10个最大数字。我可以看到进入循环的数字,并认识到它们大于当前存在的数字。但是,在打印输出时,数组中的数字永远不会超过2个。我尝试在调试模式下跟踪我的代码,但是,它看起来像我想要的那样工作。我觉得我的逻辑可能有一个简单的错误?我完全确定所有的值都进入了函数,因为我已经对此进行了三次检查。我从数组的末尾开始,该数组应该包含最高的值,一旦确定了插槽,就向下交换。我将非常感谢你的帮助。这只是我正在做的一个简单的实验,目的是为了在我尝试处理家庭作业之前掌握基础知识。

下面是我的代码示例:

代码语言:javascript
复制
 public class testing{

            static AtomicIntegerArray maxList = new AtomicIntegerArray(10); 
            final static int n = 10;

    static void setMax(int value)
            {

            for(int i = 9; i >= 0; i--)
            {       
                if(value > maxList.get(i))
                { 
                    int temp = maxList.get(i);

                maxList.set(i,value);

                if(i == 0)
                {
                    maxList.set(i, value);
                }

                else
                {   for(int j = i-1; j > 0; j--)
                    {
                        maxList.set(j, temp);
                        temp = maxList.get(j-1);
                    }
                }
                break;
            }
        }


    public static void main(String[] args)
    {
        for (int i = 0; i < n; i++)
        {
            setMax(i);
        }
    }
}

下面是一个如何调用它的示例:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-28 02:30:57

布鲁克,你的“j”循环里有个小bug。您已经保存了变量(temp)的状态,但是j循环中的逻辑丢失了该状态。这个新逻辑保留了列表中前一个元素的状态。

试试这个:

代码语言:javascript
复制
for (int j = i - 1; j >= 0; j--) {
    int t2 = maxList.get(j);
    maxList.set(j, temp);
    temp = t2;
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48478862

复制
相关文章

相似问题

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