k 값을 file1.txt와 file2.txt의 값을 output.txt로 병합하는 병합 함수를 작성하려고합니다.Java에서 입력 파일의 k 값을 병합
예를 들어 내 file1.txt에 3 1 8 5가 포함되어 있고 file2.txt에 7 2 6 4가 포함되어있는 경우 내용이 3 7 1 2 6 8 4 5 인 출력 파일 (2k) . 그래서이 경우에 k = 1 일 때, k = 1 값을 file1.txt와 file2.txt에서 병합합니다. 이 작업은 k = 1,2,4,8, ...
예상대로 작동하지 않습니다. 주요 문제는 첫 번째 while 루프에 있다고 생각합니다. 그 이상의 내용을 읽어야하고이를 해결하는 방법을 모르겠습니다./그래서 주요 질문은 입력 파일을 모두 올바르게 읽도록 조건을 설정하는 것입니다. 끝내고 쌍을 출력하여 병합하시오.
더 구체적으로 말하자면, 직선 머지 방법을 사용하여 입력 순서 3 7 1 2 8 6 5 4를 최종 정렬 된 출력 1 2 3 4 5 6 7 8로 정렬하려고합니다. 지금은 모든 문제가 도움이되기를 바랍니다.
너보다!
int i = 1;
int j = 1;
int k = 1;
BufferedWriter sorted_file_writer = new BufferedWriter(new FileWriter("output.txt",true));
BufferedReader wfr_1 = new BufferedReader(new FileReader("file1.txt"));
BufferedReader wfr_2 = new BufferedReader(new FileReader("file2.txt"));
int v1;
int v2;
String l1;
String l2;
while((i<=k) && (j<=k))
{
l1=wfr_1.readLine();
l2=wfr_2.readLine();
v1 = Integer.parseInt(l1);
v2 = Integer.parseInt(l2);
if(v1 < v2)
{
sorted_file_writer.write(Integer.toString(v1));
sorted_file_writer.write(System.getProperty("line.separator"));
i++;
}
else
{
sorted_file_writer.write(Integer.toString(v2));
sorted_file_writer.write(System.getProperty("line.separator"));
j++;
}
}
while(i <= k)
{
l1=wfr_1.readLine();
v1 = Integer.parseInt(l1);
sorted_file_writer.write(Integer.toString(v1));
sorted_file_writer.write(System.getProperty("line.separator"));
i++;
}
while(j <= k)
{
l2=wfr_2.readLine();
v2 = Integer.parseInt(l2);
sorted_file_writer.write(Integer.toString(v2));
sorted_file_writer.write(System.getProperty("line.separator"));
j++;
}
당신이 * K *의 높은 값에 대한 가공 한 예를 준 경우 크게 도움이 될 것이다. –
I 단지 어떤 작업 용액이 아직 없으므로 흐름처럼 보여야하는 방법을 제공 할 수/ 입력 : 37,128,654 1 분포 (K = 1) FILE1 : 3 1 8 5 파일 2 : 7; 2 6 4 제 병합 후 37 68 파일 2 : 12 54 제 병합 후 : 1237, 4568 번째 분포; 12; 68 45 초 배포 (K = 2) FILE1 37 (k = 4) file1 : 1237 file2 : 4568 세 번째 병합 후 : 12345678 최종 출력 시퀀스 : 12345678 유일한 문제는이 병합 부분이 k = 1,2 및 4입니다. 병합이 작동하면 모든 것이 작동합니다. :) 이 경우의 입력 파일 길이가 8이므로 최대 k = 8/2 = 4임을 기억하십시오. – henrich