誰かがこれで私を助けてくれれば本当にありがたいです。私は外部ソートを行おうとしていますが、マージの部分で立ち往生しています。どの関数を使用すればよいかわからないだけで、どのようにマージする必要があるかがわかります。
現在、複数の小さなテキスト ファイルの最初の単語を読み込んで、ファイルの量のサイズの文字列配列に格納しようとしています。したがって、基本的には、各ファイルの最初の単語の文字列配列があります。次に、アルファベット順で最小のものを決定し、それを新しいファイルに書き込みます。その後、その最小の単語のファイルの次の単語を読み取ります。この単語は、文字列配列に出力された最小の単語の位置に配置され、それを他のファイルの最初の単語の残りの部分と比較します。これは、すべての単語がソートされるまで繰り返されます。
私が遭遇している主な問題は、スキャナーを使用していて、最初の比較の実行後、スキャナーが読み取った内容のポイントを保持しないため、ファイル内の最小の単語を次の単語に切り替えることができないという事実です。私はreadlineがそうしていることを知っていますが、私のファイルはすべて空白で区切られたすべての単語であるため、readlineを使用できません。この問題の解決に役立たない十分な読み取り機能を教えてください。
for (int i = 0; i<B;i++)
{
try
{
BufferedReader ins = new BufferedReader(new FileReader(Run-"+ i + ".txt"));
Scanner scanner2 = new Scanner(ins);
temp3[i] = scanner2.next();
System.out.println(temp3[i]);
}
catch(IOException e)
{
}
}
for(int i=0;i<N;i++)
{
String smallest = temp3[0];
int smallestfile = 0;
for(j=0;j<B;j++)
{
int comparisonResult = smallest.compareTo(temp3[j]);
if(comparisonResult>0)
{
smallest = temp3[j];
smallestfile = j;
}
}
BufferedReader ins = new BufferedReader(new FileReader("C:/Run-"+ smallestfile + ".txt"));
Scanner scanner2 = new Scanner(ins);
if(scanner2.hasNext())
{
temp3[smallestfile]=scanner2.next();
}
}
}
catch(Exception e)
{
}