我一直在努力與延遲計時器。我如何使交換對觀察者可見?並在交換正在處理時在選定的欄上添加顏色?順便提一下,這是一個選擇。如何插入定時器來處理排序
selectionSort2.java
/**
*
* @author Yuvinng
*/
import java.awt.*;
import javax.swing.*;
import java.util.Random;
import javax.swing.Timer;
import java.awt.event.*;
public class SelectionSortPanel2 extends JPanel{
protected JButton selection;
private final int width=400,height=400;
private static Random generator;
private int[] list=new int[100];
private Timer timer;
public void selectionSort(int[] list)
{
int min;
int temp;
for(int index=0; index<list.length-1;index++)
{
min=index;
for(int scan=index+1;scan<list.length;scan++)
if(list[scan]<(list[min]))
min=scan;
temp=list[min];
list[min]=list[index];
list[index]=temp;
repaint();
}
}
private class swapper implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
selectionSort(list);
}
}
}
我會先嚐試設置您的代碼格式,使其更易於閱讀。你的IDE應該能夠爲你做到這一點。 –
從格式化代碼開始,讓它更易於閱讀,然後看看你如何處理計時器。你有100毫秒的延遲,但之後你排序整個陣列,然後重畫,我不認爲這是你的目標。你不想在每次交換後延遲,以便看到排序進度? –
@RogerLindsjö是,那是我的目標。但我不知道如何爲定時器創建一個循環,以便每次執行交換,以便交換對用戶可見,併爲正在交換的欄添加顏色,因此使交換更加明顯。 –