昨天,我参加了网络安全职位的采访,并提出了这个问题:
假设你有一台1GB RAM的PC,这台计算机的磁盘上有一个包含随机数的10 GB文件。您将使用什么技术对文件进行排序并提出算法。您不能使用磁盘或网络或虚拟内存进行排序?
我尝试了许多不同的方法,提出了外部排序,但面试官说这不是正确的方法。在采访结束时,我礼貌地问他,他问我的问题的方式和算法是什么,但他拒绝说这是一个很大的秘密。
我的问题是如何处理这类问题,因为我不能停止思考它,但仍然没有明确的答案?
答案 0 :(得分:-2)
要对文件进行排序,您需要在RAM中运行算法。由于文件比可用的RAM量大10倍,因此您需要将文件排序为10个(或更多)单独的块,并在最后重新组合它们。
您的算法需要包含..
<强>更新强> 我添加了我的回答,以反映@JimMischel提出的一些观点
RAM中的算法不仅可以跟踪最大数字,还可以保持单独的整数计数,该计数随着文件上每次出现的数字而增加。然后,该号码将被放置在RAM中的子列表中,但数量会出现多次。
更新:关于提问者的问题
OP发布的问题表明&#34;您不能将光盘用于排序&#34;。问题是没有任何意味着光盘不能用于存储。我相信大部分阅读这个问题都是错误的解释,因此,如果没有存储任何数据的地方,就认为分配的任务是不可能的。