[英]Bubble Sort Visualization (Repaint Error)
Thread one = new Thread(){
public void run(){
while(true){
for (int m=listlen-1;m>=1;m--){
flag=0;
for (int n=0;n<m;n++){
if (a[n+1]<a[n]){
temp=a[n+1];
repaint();
a[n+1]=a[n];
repaint();
a[n]=temp;
repaint();
flag=1;
}
}
if (flag==0){
m=0;
}
}
try
{
Thread.sleep (100);
}
catch (InterruptedException ex)
{
}
}
}
};
one.start();
您好,Stack Overflow的朋友们,我偶然发现了我的代码中的一个问题,该问题让我难以理解。
我正在创建一个GUI,以显示通过气泡排序对对象进行排序的对象。 但是我的代码当前完成的工作是显示完成的列表,然后显示它,
我认为这是我的线程存在的问题,但我无法修复它。
您正在外部for
循环之外进行等待( Thread.sleep(100)
),因此在排序完成之后。
相反,您应该将等待放置在for
循环的主体内,或者甚至可以在每个repaint()
调用之前进行。
Thread one = new Thread() {
public void run() {
while (true) {
for (int m = listlen - 1; m >= 1; m--) {
flag = 0;
for (int n = 0; n < m; n++) {
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
}
if (a[n + 1] < a[n]) {
temp = a[n + 1];
repaint();
a[n + 1] = a[n];
repaint();
a[n] = temp;
repaint();
flag = 1;
}
}
if (flag == 0) {
m = 0;
}
}
}
}
};
one.start();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.