【发布时间】:2014-03-06 19:17:53
【问题描述】:
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 。它现在似乎工作得很好,但如果有人发现有问题,请不要犹豫指出!
【问题讨论】:
-
由于 if 条件,它不会交换所有内容:
Bub[x + 1] > Bub[x]。它将较大的元素排序到数组的开头。此外,它不是一个完整的排序,因为它只对数组进行一次循环。 -
那个
while循环没有完成任何事情。 -
请遵循 java 命名约定。
Done应该是done,Bub应该是bub。 -
好的,我已经把它按升序排列,但我怎样才能让它运行不止一次呢?现在一切正常。
标签: java sorting swap bubble-sort