サイトにアクセスするたびにページのアドレスをログに記録する分析プログラムを構築しているとしましょう。これにより、log.txtは次のようになります。
x.com/a
x.com/b
x.com/a
x.com/c
x.com/a
カウンターはなく、ログファイルだけであり、SQLは使用されません。これには、数千の固有のドメインアドレス(x.com/a x.com/b)に数千の要素が含まれているため、最も効率的な方法は何ですか。このリストを調べて、上位10個のURLを吐き出します。
私の最善の解決策は、ログファイルを調べ、そのドメインがハッシュテーブルに存在しない場合は、それをキーとして追加し、その値をインクリメントします。次に、ハッシュで最大10個の値を検索します。
スペースの複雑さ(一意のドメインが数千から数百万になったらどうなるか)だけでなく、ハッシュテーブルで別の検索を実行して最大のものを見つける必要があるため、これが最善の解決策であるとは確信していません。値。