Java 气泡排序可视化(重新绘制错误) threadone=新线程(){ 公开募捐{ while(true){ 对于(int m=listlen-1;m>=1;m--){ flag=0; 对于(int n=0;n

Java 气泡排序可视化(重新绘制错误) threadone=新线程(){ 公开募捐{ while(true){ 对于(int m=listlen-1;m>=1;m--){ flag=0; 对于(int n=0;n,java,algorithm,sorting,user-interface,Java,Algorithm,Sorting,User Interface,您正在外部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

您正在外部
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++){
                    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();
threadone=新线程(){
公开募捐{
while(true){
对于(int m=listlen-1;m>=1;m--){
flag=0;
对于(int n=0;n
非常感谢,这非常有效,我不知道你可以添加线程。在循环中睡眠。
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();