2015-07-11 16 views
1

我有一個大約100M +元素的列表(當前排序),我想隨機(洗牌)和塊/拆分成較小的列表(大約50K桶)。在最大化速度方面做什麼最好的方法是什麼?我該如何洗牌並將一個大列表分成較小的列表,嘗試最大化速度?

如果他們有快速的預構建方法,我可以使用任何庫或語言(當前使用節點和python作爲項目)。謝謝!

P.S.這不僅僅是一個理論練習,我試圖找出我的實習機會,因爲我們將使用約50K數字海洋節點並行運行另一個腳本,將較小的列表作爲輸入。

+5

有你開發了一種方法你自己,測試它,發現它太慢了你的目的? – TigerhawkT3

+0

只是整數列表整數元素索引比列表本身更快。把它分成更小的列表也是一樣(即創建一個索引範圍列表)。兩者都可以使用內置插件來完成。 – martineau

+2

我們不建議在這裏採用最佳方法。你發佈你的方法,我們試圖讓它變得更好。 – CrakC

回答

1

在C或C++中以最大速度執行此操作。

在您的數組的記錄中使用「現代」Fisher-Yates shuffle。使用一個快速隨機,也許在stack overflow找到一個。

然後,在返回bucksize元件的地址陣列中(= 50000)的偏移量,例如&陣列[0],&陣列[50000],&陣列[100000] ...

相關問題