public class MergeSort { // a 배열에서 start 에서 end 사이의 값을 정렬한다. static void mergeSort(int[] a, int start, int end) { if (start == end) return; // 정렬할 부분의 길이가 1 이면 그냥 리턴한다. int middle = (start + end) / 2; // start와 end 사이 중간지점을 계산한다. mergeSort(a, start, middle); // 앞부분을 정렬하기 위한 재귀 호출 mergeSort(a, middle + 1, end); // 뒷부분을 정렬하기 위한 재귀 호출 merge(a, start, middle, end); // 앞부분과 뒷부분 병합 } // a 배열에서 앞부분(sta..