Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想用 Q 对大量数字进行排序,而不将任何中间结果保存到表中。如何在内存中对列表进行排序而不在每次迭代时创建列表的副本?我可以更新现有的 li: 并修改其元素吗?
Q 不会在排序上“保留”中间结果...我假设您的意思是由于复制而导致的大量内存开销?
因为asc并且desc您无法控制内存,除非以某种内存效率更高的方式将它们重写为 c 函数。
asc
desc
我想如果你在 c 中编写一个稀疏桶类型的排序,对于每个元素,你将数字放入磁盘上的稀疏桶列表中,而不是内存中。然后删除内存列表,然后从磁盘读取。不过听起来很慢。
我不知道你会如何在 q 中执行此操作......即使a在创建排序列表时迭代某个向量并从其中迭代删除也是一个问题,因为在删除之前你仍在制作副本。
a