I have 1 million queries on disk to sort, my local memory/cache can store
up to 1 thousand queries, how can I perform sort?
这是一个谷歌面试问题。有人可以帮我找到答案吗?
I have 1 million queries on disk to sort, my local memory/cache can store
up to 1 thousand queries, how can I perform sort?
这是一个谷歌面试问题。有人可以帮我找到答案吗?
您在内存中加载 1000 个查询并使用quicksort对它们进行排序,将它们写入文件。最后,您将拥有 1000 个这样的文件。
然后你继续使用合并文件,你猜对了,mergesort。
我就是这样做的。绝不是最优解。
可以使用外部合并排序来实现这一点。
获取更多内存。查询不是那么大。这是一个考验你是否能跳出框框思考的问题。
我很懒:读取所有查询(每个 1,000 个),将它们转储到数据库中,然后SELECT ORDER BY anything
. 如果是谷歌要求,他们无论如何都会有数据库......