merge sort로 숫자가 나열되면 그 숫자들을 차례대로 탐색하면서 오름차순에 어긋나게 되면 새로운 그룹으로 배치한 후, 그 그룹들을 첫 번째 그룹부터 두 그룹씩 차례로 낮은 숫자별로 정렬하여 새로운 그룹에 배치시켜 줍니다.
만약, 짝이 맞지 않아 한 그룹만 남았을 시에는 그대로 내려오도록 하였습니다.
이렇게 진행시키면서, 마지막 하나의 그룹에 모든 숫자가 오름차순으로 정렬 될 때까지 진행시켜 나갔습니다.
저는 이 문제를 풀기위하여 수업시간에 예를 들었던 숫자들을 하나의 배열에 넣었습니다.
그룹을 홀수로 만들기 위해 숫자 2개를 추가 하였습니다.
먼저, 주어진 숫자들을 5개의 그룹으로 나누어 하나의 2차 배열에 5행으로 하여 나누어 배치하였습니다.
이렇게 5행으로 이루어진 2차 배열을 1행과2행 3행과4행을 비교하고 5행은 비교 없이 그대로 내려오게 하여 3개의 배열로 줄였습니다.
여기서 생성된 첫 번째 배열과 두 번째 배열을 비교하여 또다시 새로운 배열을 만들었고 3 번째 배열을 그대로 내려와 2개의 배열만 남게 되었습니다.
마지막으로 이 두 개의 배열을 오름차순으로 정렬하여 최종적인 배열에 저장 시키게 되었습니다.
그 결과를 보기위해 초기 숫자와 정렬된 숫자를 출력 하였습니다.
File list:
merge sort.hwp