我们得到这些包含16字节代码的~50GB数据文件,我想找到任何时间的1/2%或更多的代码.有什么方法可以一次性通过数据吗?
编辑:有大量代码 - 每个代码都可能不同.
EPILOGUE:我选择了Darius Bacon作为最佳答案,因为我认为最好的算法是对他所关联的多数元素的修改.大多数算法应该是可修改的,只能使用少量的内存 - 比如201代码,我认为会得到1/2%.基本上你只需要在流中计算最多201个不同的代码.一旦找到201个不同的代码,就会丢弃每个代码中的一个(从计数器中扣除1,忘记任何变为0的代码).最后,你最多下降了N/201次,因此任何出现次数超过的代码仍然存在.
但这是一个两遍算法,而不是一个.你需要第二次通过计算候选人的数量.实际上很容易看出,这个问题的任何解决方案都必须使用至少2次传递(你加载的第一批元素可能都不同,其中一个代码最终可能只有1/2%)
谢谢您的帮助!
我意识到这个问题肯定没有"正确"的答案,但是当人们谈论代码行时,他们的意思是什么?例如,在C++中,您是否算空行?评论?只有一个开放或紧密支撑线?
我知道有些人使用LoC作为生产力衡量标准,我想知道这里是否有标准惯例.此外,我认为有一种方法可以让各种编译器计算代码行 - 那里有标准约定吗?