[英]Sorting Graph with Insertion Sort
我試圖一步一步地對圖中的線進行排序,以顯示不同的算法如何與GUI和計時器配合使用。
看起來是這樣的:
]
我有冒泡排序這樣工作:
timer = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int m = 0; m < tal.length; m++) {
for (int n = 0; n < m; n++) {
if (tal[n] > tal[n + 1]) {
int temp = tal[n];
tal[n] = tal[n + 1];
tal[n + 1] = temp;
grafPanel.repaint();
}
}
}
}
});
timer.start();
但是,當我嘗試與插入排序類似的操作時,會立即繪制整個圖形(而不是像我希望的那樣一次繪制)。
這是該代碼:
timer = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int n = 0; n < tal.length; n++) {
int temp = tal[n];
int i = n - 1;
while (i >= 0 && tal[i] > temp) {
tal[i + 1] = tal[i];
i--;
}
tal[i + 1] = temp;
grafPanel.repaint();
}
}
});
timer.start();
編輯:我知道我不是在完成完整排序之前實際上不將數字插入數組,然后重新繪制。 我仍然無法修復它(無法可視化)。 更具體的幫助將不勝感激。 謝謝!
您不會看到更新,因為您沒有執行交換。 您只是在為插入的元素選擇合適的位置(同時將元素一直向右移動),然后插入,然后重新繪制。
如果您改為進行交換(如您在氣泡排序中所做的那樣)並在每次交換后重新繪制,您將看到所有必要的更新
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.