Re: [問題] 有沒有辦法取代或改善List的效率?

看板java作者 (勁過呂布)時間18年前 (2007/05/23 11:13), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/12 (看更多)
※ 引述《Mewra ()》之銘言: : Collections.shuffle( originalRandomArray ); : randomArray.clear(); // initialize : for( int i = 0 ; i < originalRandomArray.size() ; i++ ) : { : if( i < nodeNumber * CHANCE_MOVE ) : { : randomArray.add( originalRandomArray.get( i ) ); : } : } 這一部份的 codes... 可以改成為: Random randMachine = new Random(System.currentTimeMillis()); randomArray.clear(); for (int i=0; i<nodeNumber * CHANCE_MOVE; i++) { if (i >= originalRandomArray.size()) break; // prevent overflow int ranInt = randMachine.nextInt(originalRandomArray.size() - i) + i; int ranTarget = originalRandomArray.get(ranInt); // get the number in pos [ranInt] int curPos = originalRandomArray.get(i); // get the number in pos [i]; originalRandomArray.remove(ranInt); if (ranInt != i) originalRandomArray.remove(i); originalRandomArray.add(i, ranTarget); if (ranInt != i) originalRandomArray.add(ranInt, curPos); // swap two numbers in pos ranInt and i randomArray.add(ranTarget); // add the random number to the result } 這就做到了 random 抽出 nodeNumber * CHANCE_MOVE 個數的目的,而且是 O(n) 剛測試過... 若是 nodeNumber = 1000000, CHANCE_MOVE = 0.05 時間是五分三十八秒 XD -- 《為了要得到真相,就要向原 PO 伸圖》 那就是伸圖魔人的沒圖沒真相原則,那時我們堅信那就是逼逼死的真實 靠么,圖咧? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 147.8.130.225 ※ 編輯: superlubu 來自: 147.8.130.225 (05/23 11:31)
文章代碼(AID): #16Kx5Vcg (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 6 之 12 篇):
文章代碼(AID): #16Kx5Vcg (java)