看板 java 關於我們 聯絡資訊
目前的程式需要處理1000K以上的node, 這部份的運作程式如下 ArrayList<Integer> originalRandomArray = new ArrayList<Integer>(); protected ArrayList<Integer> randomArray = new ArrayList<Integer>(); public void GenerateRandomArray( int nodeNumber ) { originalRandomArray.clear(); // initialize; for( int i = 0 ; i < nodeNumber; i++ ) { originalRandomArray.add( i ); } Collections.shuffle( originalRandomArray ); randomArray.clear(); // initialize for( int i = 0 ; i < originalRandomArray.size() ; i++ ) { if( i < nodeNumber * CHANCE_MOVE ) { randomArray.add( originalRandomArray.get( i ) ); } } } 這部份code的目的是將originalRandomArray裡取出來的CHANCE_MOVE%個nodes存到 randomArray去. 但整個程式在nodeNumber = 1000000時, 處理時間多了2小時 (原本是1小時, 但是是用簡單的方法做出一個不完全的random). 請問有辦法改進效率嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.180.59 ※ 編輯: Mewra 來自: 123.193.180.59 (05/22 18:31)