2014-08-29 36 views
0

這是最後一個問題,我解決不了:爪哇 - 創建隨機排列,而無需使用臨時表


  1. 您將得到一個數組{1,2,3,4,5,6,7,8,9}

創建創建一個隨機函數沒有使用臨時列表的排列,在Θ(n)時間。


我不能使用Collectionsshuffle函數一旦得到int[]數組就可以做到這一點?我不確定問題究竟在問什麼。我可以做一個簡單的循環,在那裏我可以使用迭代方法對它進行隨機化,並做一個簡單的檢查,但洗牌會更容易,不是嗎?

+1

不使用臨時名單意味着你應該輸入數組中交換數字來產生輸出。 – Eran 2014-08-29 19:05:46

+0

結果數字包含正好n位數字嗎? – Braj 2014-08-29 19:07:02

+0

如果我可以交換數字,我不應該使用Shuffle?或者你認爲他們希望我實際上做硬編碼的洗牌 – 2014-08-29 19:11:09

回答

2

在僞代碼:

index1 = 0 
index2 = 0 
loop: when index1 < array.length 
     index2=random[index1,array.length] 
     print[array[index2] 
     swap[index1,index2] 
     index1++ 

在Java:

int x = 0; 
int y = 0; 
Random r = new Random(); 

while(x < array.length){ 

    y = x + r.nextInt(array.length-x); 
    System.out.println(array[y]); 

    int temp = array[x]; 
    array[x] = array[y]; 
    array[y] = temp; 

    x++; 
}