首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >冒泡排序交换每一个数字而不考虑值。

冒泡排序交换每一个数字而不考虑值。
EN

Stack Overflow用户
提问于 2014-02-09 14:54:21
回答 2查看 93关注 0票数 0
代码语言:javascript
复制
import java.util.*;
public class Zhangbubble
{
    public static void main (String[] args)
    {
        int Bub[] = new int[6];
        Random randy = new Random();
        boolean Done = false;
        for (int x=0; x<6; x++)
        {
            Bub[x] = randy.nextInt(100);
            System.out.println (Bub[x]);
        }
        System.out.println ("This is the original array");
        while (! Done)
        {
            Done = true;
            for(int x = 0; x < Bub.length - 1; x++) 
            {
                if(Bub[x+1] < Bub[x]) 
                {
                    int temp = Bub[x];
                    Bub[x] = Bub[x+1];
                    Bub[x+1] = temp;
                    System.out.println ("Number "+Bub[x]+ " and  " +Bub[x+1]+ " have     been switched");
                }
            }
            for(int x = 0; x < Bub.length; x++) 
            {
                System.out.println(Bub[x]);

            }
            Done = true;
        } 

    }
}

我的气泡排序按升序工作,但只排序一次。它似乎工作得很好,但我无法确定是什么使它不循环。它将运行一次数字序列,但它不会在第一次初始检查之后继续排序。有人能帮我把它循环起来直到整个序列正常吗?好吧,我想我可能已经搞清楚了。我去掉了Done = true,而是在排序算法之后添加了Done = false。它现在看起来很好用,但是如果有人发现了问题,请不要犹豫地指出出来!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-09 15:03:13

它不能交换“一切”。但是,如果您试图按升序对数组进行排序,则if条件是错误的。

此外,您需要仔细考虑何时应该将Done设置为true。目前的做法存在缺陷。

票数 0
EN

Stack Overflow用户

发布于 2014-02-09 15:15:26

据我所见,交换还行。您的问题是,while循环的内部部分不会重复不止一次,因为您在结束时将Done设置为true。这样,只有最小的元素在数组中的位置才被正确地确定。

如果您希望它执行完整的气泡排序,我建议将外部while循环转换为一个for周期,如下所示

代码语言:javascript
复制
for (int y = 0; y < Bub.length - 1; y++) {
    for (int x = 0; x < Bub.length - 1; x++) {
        // do stuff
    }
}

或者,如果要保持while循环,则应正确设置结束条件,如

代码语言:javascript
复制
if ( *everything is sorted* ) {
    Done = true;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21660601

复制
相关文章

相似问题

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