ホームページ >バックエンド開発 >PHPチュートリアル >インタビューの質問: 256M のメモリがある場合、10G ファイルをソートします (ファイル内の 1 行につき 1 つの数字)

インタビューの質問: 256M のメモリがある場合、10G ファイルをソートします (ファイル内の 1 行につき 1 つの数字)

WBOY
WBOYオリジナル
2016-08-10 09:07:185536ブラウズ

256M のメモリがあるとして、10G ファイル (ファイルの行ごとに 1 つの数字) を並べ替えるにはどうすればよいでしょうか? 10G ファイルを検索するにはどうすればよいですか? 10G ファイル内の各キーワードの出現数をカウントする方法

返信内容:

256M のメモリがあるとして、10G ファイル (ファイルの行ごとに 1 つの数字) を並べ替えるにはどうすればよいでしょうか? 10G ファイルを検索するにはどうすればよいですか? 10G ファイル内の各キーワードの出現数をカウントする方法

スペースと時間を交換する
具体的な実装は、ファイルをバッチでロードしてから計算することです

java?nioとmapreduceを使うというアイデア

php はわかりませんが、この質問には見覚えがあるようです。 php,但是看这个题目似曾相识。
说说思路吧。
1、排序的实现
这是一个单机外部排序的典型题目。具体的方法就是先分块进行排序然后多路归并成输出文件。
2、查找
如果不能对文件进行处理的话,只能遍历进行查找。
如果是可以对文件进行处理的话,那么上面已经排序好了文件,就可以进行二分查找あなたのアイデアについて話しましょう。
1. ソートの実装
これは、単一マシンの外部ソートの典型的な問題です。具体的な方法は、チャンクで並べ替えてから、出力ファイルに複数の方法でマージすることです。
2. 検索

ファイルを処理できない場合は、トラバーサルによってのみ検索できます。

ファイルを処理できる場合、ファイルは上で並べ替えられており、バイナリ検索を実行できます。

3. 統計

ファイルを処理できない場合は、一度スキャンする以外に良い方法はありません。 🎜すでにシーケンスをキャプチャしている場合は、二分探索を直接実行できます。見つかった位置の出現数を両端で検索します。 🎜 🎜 🎜「Programming Pearls」という本を読むと、この問題があるようです。 🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。