看板 java 關於我們 聯絡資訊
※ 引述《H45 (!H45)》之銘言: : ※ 引述《superlubu (勁過呂布)》之銘言: : 經測試,你的 Code 運作速度比原程式碼還慢 : nodeNumber = 100,000 : CHANCE_MOVE = 0.05 : 原 PO 的版本: 217ms : 你的版本: 3000ms : 請問是不是哪裡有漏掉了呢? : (文末附上我的測試碼) Orz... 我忘了 ArrayList 頻繁的 remove 和 add 動作所需的時間要很多 Orz 該用 set(index, element) 才對,只要把 swapping 那幾句換成: originalRandomArray.set(i, ranInt); originalRandomArray.set(ranInt, curPos); // swap two numbers in pos ranInt and i 就可以把時間縮短為 78ms (原 PO 版本 109ms) 題外話: 若換成用 int[] 來作同一個問題,時間只用 19ms 囧rz 謝謝 H45 板友的覆查 <(_ _)> 注: 這個 algorithm 若 CHANCE_MOVE >= 0.5 時就會比原 PO 的方法還要慢了 對不起 <(_ _)> -- 勁過呂布的勁過相薄... http://www.wretch.cc/album/superlubu 亂七八糟的,不好意思 m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 147.8.130.225 ※ 編輯: superlubu 來自: 147.8.130.225 (05/23 12:55) ※ 編輯: superlubu 來自: 147.8.130.225 (05/23 13:05)