2011-07-17 6 views
0

数値の配列があり、同じ数の要素を含むパーティションに分割されています(array_chunk()の出力と同じ)。それらは別々のファイルに書き込まれ、ファイル1.txtには最初のチャンクが、2.txtには2番目のチャンクが含まれます。そして今、これらのファイルに初期配列の要素の数を変更してください。もちろん、それらを1つの配列に読み込んで分割することはできますが、かなりの量のメモリが必要です。より効率的なソリューションで私を助けてください。 (ファイルの数と最後のファイルのサイズは別々に保存されています)他のアイデアはありません...ファイル内のデータの並べ替え

+1

あなたはそれをより良く説明できますか?同じサイズのファイルがいくつかあり、最後のファイルは小さくて、あるファイルから別のファイルに要素を移動してファイルのサイズを変更する必要がありますか? – Nobody

+0

はい、そのサイズは同じであり、レコードの「グローバル」順も同じです。 –

答えて

0

違う数字が分かりますか?そうすれば、データを簡単に読み込むことができ、チャンクを書き込むたびにデータを書き出すことができます。擬似コードの場合:

for each original file: 
    for each record: 
     add record to buffer 
     if buffer is desired size: 
      write new file 
      clear buffer 
write new file 

明らかに、新しいファイルは古いファイルと区別して保存する必要があります。そして、一度データを書き直すと、何とかそれらを交換することができます。 (私は個人的には2つのディレクトリを持っていることをお勧めします。完了したらディレクトリ名を変更します)

チャンクのサイズがわからない場合(たとえば、特定の数のファイルが必要な場合)は、それを理解するために必要な作業をしてから、元の解決策を進めてください。

+0

ありがとうございます。私はサイズを知っている(言及するのを忘れていた)。あなたのバージョンは最も効率的ではないかもしれません。なぜなら、いくつかのファイルは完全に書き直す必要はないからです(名前を変更して変更するだけです)。しかし、数字を計算してコードを使用するのは簡単です。 –

関連する問題