簡體   English   中英

帶插入排序的排序圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM