본문/내용
3원 다단계 합병 알고리즘 구현
담당교수
:
학과
:
학번
:
성명
:
1. 숙제 설명
난수 생성기(random number generator)를 이용하여 정수(0`〓정수 `〓 10000) 1000개를 생성하고 레코드 하나에 정수 하나를 저장한 파일을 생성하라. 이 화일을 3-원 다단계 합병 기법으로 정렬하는 프로그램을 작성해 보라. 이 프로그램에는 초기 런들을 피보나치 수로 분배하는 알고리즘이 구현되어야 한다. 여기서는 런의 수가 15보다 큰 피보나치 수를 사용하고 메인 메모리에는 4개의 레코드를 유지할 수 있다고 가정하라. 프로그램의 출력은 앞에서 지시한 명세대로 올바르게 작동한다는 것을 증명할 수 있도록 개인적인 출력 형식을 만들어 사용하라.
2. 프로그램 설명
1)프로그램 조건
-초기 런들을 피보나치 수로 분배하는 알고리즘을 포함하고 있어야 한다.
-프로그램 실행 후 `input.txt`, `intermed.txt`, `output.txt`파일이 생성되어야 한다.
-input.txt에는 랜덤 넘버 제너레이터로 만든 1000개의 정수가 들어있다.
-intermed.txt에는 3원 다단계 합병 과정을 보여주는 내용이 들어있다.
-output.txt에는 3원 다단계 합병으로 정렬된 정수 1000개가 들어있다.
※input, output파일을 출력 형식
input.txt : 한줄에 정수 한 개
output.txt : 한줄에 정수 한 개, 정렬된 결과이기 때문에 작은 수부터 큰수 순서로 되어있다.
정수가 1000개인지를 확인할 수 있도록 각 라인에 record 1, record 2, ... 식으로 카운트를 두었다.
2)프로그램 함수 설명
-void make_…
①우선 파일1이 기준이 된다.
②기준이 되는 파일에 할당된 런의 개수만큼 기준을 제외한 두 파일에 남아 있는 런을 할당한다.
③기준을 다음 파일로 넘긴다.
④②번부터 런을 모두 할당할 때까지 반복한다.