0

我想用 Q 对大量数字进行排序,而不将任何中间结果保存到表中。如何在内存中对列表进行排序而不在每次迭代时创建列表的副本?我可以更新现有的 li: 并修改其元素吗?

4

1 回答 1

1

Q 不会在排序上“保留”中间结果...我假设您的意思是由于复制而导致的大量内存开销?

因为asc并且desc您无法控制内存,除非以某种内存效率更高的方式将它们重写为 c 函数。

我想如果你在 c 中编写一个稀疏桶类型的排序,对于每个元素,你将数字放入磁盘上的稀疏桶列表中,而不是内存中。然后删除内存列表,然后从磁盘读取。不过听起来很慢。

我不知道你会如何在 q 中执行此操作......即使a在创建排序列表时迭代某个向量并从其中迭代删除也是一个问题,因为在删除之前你仍在制作副本。

于 2015-02-17T07:36:47.760 回答