2015-07-11 18 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] ...

相关问题