boundary guard

반열린 구간으로 끝점을 고정하면 병합 실수가 줄어듭니다

반복형 병합 정렬에서는 [left, mid)[mid, right)를 끝까지 유지하고, 남은 구간을 반드시 복사합니다.

01234
52413
left=0, mid=2, right=4

왼쪽 범위

i < mid인 동안만 왼쪽 값을 비교합니다. mid 인덱스는 오른쪽의 첫 칸입니다.

오른쪽 범위

j < right인 동안만 오른쪽 값을 비교합니다. right는 포함하지 않습니다.

누락 위험

한쪽 포인터가 먼저 끝나면 다른 쪽의 남은 값을 결과에 모두 붙여야 합니다.

while (i < mid && j < right) pick smaller while (i < mid) append left remainder while (j < right) append right remainder