Ani*_*wal 5 algorithm data-structures
我的一位朋友在接受采访时被问到以下问题.谁能告诉我如何解决它?
我们有一个相当大的日志文件,大约5GB.日志文件的每一行都包含用户在我们网站上访问过的URL.我们想弄清楚用户访问过的最受欢迎的100个网址是什么.怎么做?
如果我们有超过10GB的RAM,只需使用hashmap直接进行.
否则,使用哈希函数将其分成几个文件.然后处理每个文件并获得前5名.每个文件的"前5名",将很容易获得前5名.
另一种解决方案是使用任何外部排序方法对其进行排序 然后扫描文件一次以计算每次出现的次数.在此过程中,您无需跟踪计数.你可以安全地扔掉任何没有进入top5的东西.