ホームページ >バックエンド開発 >PHPチュートリアル >インタビューの質問: 256M のメモリがある場合、10G ファイルをソートします (ファイル内の 1 行につき 1 つの数字)
256M のメモリがあるとして、10G ファイル (ファイルの行ごとに 1 つの数字) を並べ替えるにはどうすればよいでしょうか? 10G ファイルを検索するにはどうすればよいですか? 10G ファイル内の各キーワードの出現数をカウントする方法
256M のメモリがあるとして、10G ファイル (ファイルの行ごとに 1 つの数字) を並べ替えるにはどうすればよいでしょうか? 10G ファイルを検索するにはどうすればよいですか? 10G ファイル内の各キーワードの出現数をカウントする方法
スペースと時間を交換する
具体的な実装は、ファイルをバッチでロードしてから計算することです
java?nioとmapreduceを使うというアイデア
php
はわかりませんが、この質問には見覚えがあるようです。 php
,但是看这个题目似曾相识。
说说思路吧。
1、排序的实现
这是一个单机外部排序的典型题目。具体的方法就是先分块进行排序
然后多路归并
成输出文件。
2、查找
如果不能对文件进行处理的话,只能遍历进行查找。
如果是可以对文件进行处理的话,那么上面已经排序好了文件,就可以进行二分查找
あなたのアイデアについて話しましょう。
1. ソートの実装
これは、単一マシンの外部ソートの典型的な問題です。具体的な方法は、チャンクで並べ替え
てから、出力ファイルに複数の方法でマージ
することです。
2. 検索
ファイルを処理できる場合、ファイルは上で並べ替えられており、バイナリ検索
を実行できます。
3. 統計
ファイルを処理できない場合は、一度スキャンする以外に良い方法はありません。 🎜すでにシーケンスをキャプチャしている場合は、二分探索を直接実行できます。見つかった位置の出現数を両端で検索します。 🎜 🎜 🎜「Programming Pearls」という本を読むと、この問題があるようです。 🎜